PAT 1068. Find More Coins
来源:互联网 发布:淘宝十大优站 编辑:程序博客网 时间:2024/04/30 19:25
题目:http://pat.zju.edu.cn/contests/pat-a-practise/1068
题解:
背包。
代码:
#include<cstdio>#include<cstring>#include<cmath>#include<string>#include<vector>#include<map>#include<set>#include<stack>#include<queue>#include<algorithm>using namespace std;#define INF 0x6fffffffint dp[10005][105];//dp[i][j]=max(dp[i-1][j],dp[i-1][j-num[i]]+num[i])//dp[i][j]表示不超过j且从前i个硬币中挑选出的最大和int num[10005];bool flag[10005][105];int main(){ int n,m; memset(flag,false,sizeof(flag)); memset(dp,0,sizeof(dp)); scanf("%d%d",&n,&m); for(int i=1;i<=n;++i) scanf("%d",num+i); sort(num+1,num+1+n,greater<int>()); for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) { if(j<num[i]||dp[i-1][j-num[i]]+num[i]<dp[i-1][j]) dp[i][j]=dp[i-1][j]; else { dp[i][j]=dp[i-1][j-num[i]]+num[i]; flag[i][j]=true; } } if(dp[n][m]!=m) { printf("No Solution"); } else { bool first=true; for(int i=n;i>=1&&m>0;--i) { if(flag[i][m]) { if(first) { printf("%d",num[i]); first=false; } else printf(" %d",num[i]); m-=num[i]; } } } printf("\n"); return 0;}
来源:http://blog.csdn.net/acm_ted/article/details/20809579
0 0
- PAT 1068. Find More Coins
- PAT 1068. Find More Coins
- 【PAT】1068. Find More Coins
- PAT--1068. Find More Coins
- PAT 1068. Find More Coins
- PAT A 1068. Find More Coins (30)
- pat 1068. Find More Coins (30)
- PAT 1068. Find More Coins (30)
- 【PAT】1068. Find More Coins (30)
- pat 1068. Find More Coins (30)
- PAT(A) - 1068. Find More Coins (30)
- PAT甲级1068. Find More Coins (30)
- pat 1068. Find More Coins (30)
- 【PAT甲级】1068. Find More Coins (30)
- PAT-A-1068. Find More Coins (30)
- PAT 甲级 1068. Find More Coins (30)
- PAT 1068 Find More Coins
- 1068. Find More Coins
- 代码审查和不良编程习惯
- Yii-数据库操作-多表关联
- 把笑容酿成毒酒,与君共饮
- Yii: CGridView设置关联表格数据过滤和排序
- MySQL删除/更新数据时报1175错误
- PAT 1068. Find More Coins
- The connection to adb is down, and a severe error has occured.
- 数组中只出现一次的数
- Struts2的自动类型转换及自定义类型转换
- 优秀的linux学习网站(转载)
- (TCP-over-UDP library):基于UDP协议之上实现通用、可靠、高效的TCP协议
- Java常用排序算法/程序员必须掌握的8大排序算法
- HDU-1535
- C#的数组