PAT1068 Find More Coins (背包问题)
来源:互联网 发布:汉服复原小组淘宝 编辑:程序博客网 时间:2024/05/18 17:45
参考了别人的博客,这道题不太懂。http://blog.csdn.net/tiantangrenjian/article/details/17334201
#include <stdio.h>#include <algorithm>#include <string.h>using namespace std;int n,m;int arr[100008];int f[10008][108];int has[10008][108];bool cmp(int a,int b){ return a>b;}int main(){ int second; memset(has, 0, sizeof(has)); memset(f, 0, sizeof(f)); //freopen("/Users/pantingting/Documents/code/data/input", "r", stdin); scanf("%d%d",&n,&m); for (int i=1; i<=n; i++) { scanf("%d",&arr[i]); } sort(arr+1,arr+n+1,cmp); f[0][0]=0; for (int i=1; i<=n; i++) { for (int j=1; j<=m; j++) { if (j-arr[i]<0) { second=0; }else second=f[i-1][j-arr[i]]+arr[i]; if (f[i-1][j]>second) { f[i][j]=f[i-1][j]; has[i][j]=0; } else{ f[i][j]=second; has[i][j]=1; } } } if (f[n][m]!=m) { printf("No Solution"); } else{ //printf("f[n][m]=%d\n",f[n][m]); int first=0; while (m&&n) { while(has[n][m]==0){ n--; } if (first==0) { first=1; printf("%d",arr[n]); } else printf(" %d",arr[n]); m-=arr[n]; n--; } } printf("\n"); return 0;}
0 0
- PAT1068 Find More Coins (背包问题)
- 【PAT 1068】 Find More Coins 背包问题
- PAT 1068. Find More Coins (30)(背包问题,动态规划)
- PAT 1068 Find More Coins 背包
- 1068. Find More Coins (30) 01背包
- PAT 甲级 1068 Find More Coins(0,1背包)
- PAT 5-24 Find More Coins 背包记录路径
- PAT 1068. Find More Coins (30) DFS,01背包
- 1068. Find More Coins
- 1068. Find More Coins
- 1068.Find More Coins
- Find More Coins
- 1068. Find More Coins
- 1068. Find More Coins
- PAT_1068. Find More Coins
- Find More Coins (30)
- 1068. Find More Coins (30)
- 1068. Find More Coins (30)
- PLSQL查询结果中文乱码
- UVA1428
- TeeChart8.0注册
- 连载:告诉你如何设计一个日访问量千万级别的系统,谈oracle的高级设计和开发(1)
- Android程序员必备精品资源
- PAT1068 Find More Coins (背包问题)
- 《穹顶之下》的思考:柴静改变不了什么!
- Android性能专项测试之battery-historian试用
- “default”标签跳过“ ”的初始化操作问题解决
- 【图像处理】透视变换 Perspective Transformation
- 【ssh】——Struts2从前端传值到后台的三种方法(从属性到ModelDriven)
- 横向合并查询结果
- javaMail异常 NoClassDefFoundError: com/sun/mail/util/LineInputStream
- 不用第三个变量交换2个变量的值