韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有104枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。

输入格式:

输入第一行给出两个正整数:N(<=104)是硬币的总个数,M(<=102)是韩梅梅要付的款额。第二行给出N枚硬币的正整数面值。数字间以空格分隔。

输出格式:

在一行中输出硬币的面值 V1 <= V2 <= ... <= Vk,满足条件 V1 + V2 + ... + Vk = M。数字间以1个空格分隔,行首尾不得有多余空格。若解不唯一,则输出最小序列。若无解,则输出“No Solution”。

注:我们说序列{A[1], A[2], ...}比{B[1], B[2], ...}“小”,是指存在 k >= 1 使得 A[i]=B[i] 对所有 i < k 成立,并且 A[k] < B[k]。

输入样例1:

8 9
5 9 8 7 2 3 4 1

输出样例1:

1 3 5

输入样例2:

4 8
7 2 4 3

输出样例2:

No Solution

分析:01背包问题,因为要输出从小到大的排列,可以先把硬币面额从大到小排列,然后用bool类型的choice[i][j]数组dp[i][j]是否选取,如果选取了就令choice为true;然后进行01背包问题求解,如果最后求解的结果不是恰好等于所需要的价值的,就输出No Soultion,否则从choice[i][j]判断选取的情况,i从n到1表示从后往前看第i个物品的选取情况,j从m到0表示从容量m到0是否选取(j = j - w[i]),把选取情况压入arr数组中,最后输出arr数组

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int dp[10010], w[10010];
bool choice[10010][10010];
int cmp1(int a, int b) { return a > b; }
int main() {int n, m;scanf("%d%d", &n, &m);for(int i = 1; i <= n; i++)scanf("%d", &w[i]);sort(w + 1, w + n + 1, cmp1);for(int i = 1; i <= n; i++) {for(int j = m; j >= w[i]; j--) {if(dp[j] <= dp[j-w[i]] + w[i]) {choice[i][j] = true;dp[j] = dp[j-w[i]] + w[i];}}}if(dp[m] != m) printf("No Solution");else {vector<int> arr;int v = m, index = n;while(v > 0) {if(choice[index][v] == true) {arr.push_back(w[index]);v -= w[index];}index--;}for(int i = 0; i < arr.size(); i++) {if(i != 0) printf(" ");printf("%d", arr[i]);}}return 0;
}

L3-001. 凑零钱-PAT团体程序设计天梯赛GPLT(01背包,动态规划)相关推荐

  1. L2-005 集合相似度-PAT团体程序设计天梯赛GPLT

    题目来源:团体程序设计天梯赛-练习集 题目地址:L2-005 集合相似度 题目大意 给定 nnn 个集合,然后有 kkk 次询问,每次询问都要求出 Nc/Nt×100%N_c / N_t \times ...

  2. L1-079 天梯赛的善良 (20 分)-PAT 团体程序设计天梯赛 GPLT

    天梯赛是个善良的比赛.善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分. 于是命题组首先将编程能力划分成了 106个等级( ...

  3. L1-078 吉老师的回归 (15 分)-PAT 团体程序设计天梯赛 GPLT

    曾经在天梯赛大杀四方的吉老师决定回归天梯赛赛场啦! 为了简化题目,我们不妨假设天梯赛的每道题目可以用一个不超过 500 的.只包括可打印符号的字符串描述出来,如:Problem A: Print &q ...

  4. [Python] L1-052 2018我们要赢-PAT团体程序设计天梯赛GPLT

    2018年天梯赛的注册邀请码是"2018wmyy",意思就是"2018我们要赢".本题就请你用汉语拼音输出这句话. 输入格式: 本题没有输入. 输出格式: 在第 ...

  5. L1-052 2018我们要赢-PAT团体程序设计天梯赛GPLT

    2018年天梯赛的注册邀请码是"2018wmyy",意思就是"2018我们要赢".本题就请你用汉语拼音输出这句话. 输入格式: 本题没有输入. 输出格式: 在第 ...

  6. L3-007. 天梯地图-PAT团体程序设计天梯赛GPLT

    本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证对任意的查询请求,地图上都至少存在一条可达路线. 输 ...

  7. L3-011 直捣黄龙 (30 分)-PAT 团体程序设计天梯赛 GPLT

    本题是一部战争大片 -- 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不唯一时,要求选择可以沿途解放最多城镇 ...

  8. [Python] L1-045 宇宙无敌大招呼-PAT团体程序设计天梯赛GPLT

    据说所有程序员学习的第一个程序都是在屏幕上输出一句"Hello World",跟这个世界打个招呼.作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼. 输入格式 ...

  9. [Python] L1-005. 考试座位号-PAT团体程序设计天梯赛GPLT

    L1-005. 考试座位号 每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号 ...

最新文章

  1. 中学计算机老师 当领导可能性,求分享,当中学计算机老师带信息学奥赛是怎样的感受 - 信息科学技术学院(EECS)版 - 北大未名BBS...
  2. linux文件属性权限相关
  3. ajax 页面无刷新,Ajax的页面无刷新实现详解(附代码)
  4. 将文件中所有数读到一个数组中_「数据结构与算法」将5个文件中的一千万年龄合并到一个新文件中...
  5. mysql主从 毫秒_MySQL主从数据库同步延迟问题解决(转)
  6. 安卓9 怎么运行老程序_PLC怎么连接电脑?怎么把在电脑编程好的程序放入PLC运行?...
  7. Google金山词霸体验小记
  8. MongoDB 表结构分析工具介绍 -- Variety
  9. 销售订单无法使用折扣(其他可以正常使用)
  10. spring security原理图及其解释
  11. Chrome最新离线安装包下载
  12. 解决python的OverflowError: int too large to convert to float
  13. 【Java面试题】一次完整的Http请求过程(非常详细)
  14. linux下U盘为只读文件系统的解决办法
  15. pgloader mysql_pgloader 学习(四)一些简单操作例子
  16. 挺有意思的文章。。。
  17. Unsupported Modules Detected: Compilation is not supported for following modules: app, library. Unfo
  18. IDEA括起选中的选中的内容
  19. Square Destroyer UVA - 1603 IDA*
  20. AI TIME PhD实验室专场,四月隆重登场!

热门文章

  1. android CTS test
  2. wikioi 1306 机智Trie树
  3. 每天一个linux命令(28):diff 命令
  4. 创业团队如何在低成本的情况下保护网站安全
  5. 弥合安全和开发间隙的四个关键点
  6. 详细分析GitLab CE 已遭在野利用漏洞 (CVE-2021-22205)
  7. 微软低代码工具 Power Apps 配置不当,暴露3800万条数据记录
  8. m_Orchestrate learning system---三十一、模板和需求的关系
  9. Android 中的数据储存方案, 持久化技术
  10. 阿里云上线镜像平台 小白用户轻松上云