记录路径的背包问题
来源:互联网 发布:中国互联网中心 知乎 编辑:程序博客网 时间:2024/05/14 07:23
主要还是借助増维度的方式来记录数据.....然后滚动即可!!!
感谢羊大神!!!!!!!!
#include<cstdio>#include<cstring>struct noi{ int val; int amo;};int main(){ int coffee,i,j,T[10000][5]={0}; noi coin[4]; while(scanf("%d%d%d%d%d",&coffee,&coin[0].amo,&coin[1].amo,&coin[2].amo,&coin[3].amo)!=EOF){ if(coffee==0&&coin[0].amo==0&&coin[1].amo==0&&coin[2].amo==0&&coin[3].amo==0)break; memset(T,0,sizeof(T)); coin[0].val=1,coin[1].val=5,coin[2].val=10,coin[3].val=25; for(i=0;i<4;i++){ for(j=coin[i].val;j<=coin[i].val*coin[i].amo&&j<=coffee;j++){ // printf("%d %d %d %d\n",i+1,j,T[j][0],T[j-coin[i].val][0]+1); if(T[j][0]<T[j-coin[i].val][0]+1){ T[j][0]=T[j-coin[i].val][0]+1; T[j][1]=T[j-coin[i].val][1]; T[j][2]=T[j-coin[i].val][2]; T[j][3]=T[j-coin[i].val][3]; T[j][4]=T[j-coin[i].val][4]; T[j][i+1]++; } } } // printf("total?%d\n",T[coffee][0]); if(T[coffee][0]==0)printf("Charlie cannot buy coffee.\n"); else printf("Throw in %d cents, %d nickels, %d dimes, and %d quarters.\n",T[coffee][1],T[coffee][2],T[coffee][3],T[coffee][4]); } return 0;}
0 0
- 记录路径的背包问题
- 记录路径的01背包问题
- 背包问题加记录路径
- NOJ1308 背包问题 (背包记录路径)
- 01背包、完全背包、多重背包问题的C++实现及路径记录
- Uva624(记录路径的01背包)
- poj 1787 记录路径的多重背包
- 01背包+记录路径
- zoj2156Charlie's Change 多重背包可行性问题+记录路径
- uva 01背包记录路径
- 0/1背包记录路径
- 01背包记录路径)
- POJ1787:Charlie's Change(记录路径的多重背包)
- hdu2126Buy the souvenirs (01背包+记录路径的种数)
- POJ1853 Cat (变形与记录路径的01背包)
- POJ 1787 Charlie's Change 记录路径的多重背包
- UVA 624 CD 【记录路径式的01背包】
- 记录路径匹配的一个小问题
- 我们不是病了 而是体内积存毒素太多了
- Flash 函数功能块(自己搜集的)
- Linux gpt分区
- 类加载器和自定义类加载器
- [NWPU][2014][TRN][5]二分和贪心 M - 贪心 基础 POJ 2709
- 记录路径的背包问题
- Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染
- 安卓----多媒体编程
- android实现左右滑动界面
- 【转】计算平方根
- poj 1088 动态规划
- Codeforces Round #257 (Div. 2) Jzzhu and Children (队列)
- BCB中登陆窗口的实现
- java冒泡排序