蓝桥杯 动态规划+背包
2012-02-27 10:30
183 查看
公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。
程序输入:
第一行是一个整数m,代表可购买的商品的种类数。
接下来是m个整数,每个1行,分别代表这m种商品的单价。
程序输出:
第一行是一个整数,表示共有多少种方案
第二行开始,每种方案占1行,表示对每种商品购买的数量,中间用空格分隔。
例如:
输入:
2
200
300
则应输出:
2
2 2
5 0
输入:
2
500
800
则应输出:
1
2 0
要求考生把所有函数写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。
程序输入:
第一行是一个整数m,代表可购买的商品的种类数。
接下来是m个整数,每个1行,分别代表这m种商品的单价。
程序输出:
第一行是一个整数,表示共有多少种方案
第二行开始,每种方案占1行,表示对每种商品购买的数量,中间用空格分隔。
例如:
输入:
2
200
300
则应输出:
2
2 2
5 0
输入:
2
500
800
则应输出:
1
2 0
要求考生把所有函数写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。
#include <cstdio> #include <cstdlib> #include <list> #include <string> #include <iterator> #include <iostream> using namespace std; int *a,*b; int n; int count = 0; list<string> meanprintf; void print() { int i; string temp(""); char cc; for(i = 0; i < n; i++){ cc=b[i]+'0'; temp+=cc; if(i!=n-1) temp+=' '; } meanprintf.push_back(temp); } void problem9(int total,int size) { if(size != n ) { if(total == 0)//判断背包是否正装满 { count++;//存放可行方案的个数 print();//输出此可行解 } else { problem9(total,size + 1);//未放入物品a【size】的情况 if(total - a[size] >= 0)//判断放入a【size】后,是否会超出背包的承载 { b[size]++;//使得a【size】对应物品的数量加1 problem9(total - a[size],size);//放入物品a[size]的情况 b[size]--;//使得相应的物品数量减1 } } } } void main() { int i,j; scanf("%d",&n); a = (int*)malloc(sizeof(int) * n); b = (int*)malloc(sizeof(int) * n); for(i = 0; i < n; i++) scanf("%d",&a[i]); for(j = 0; j < n; j++) b[j] = 0; problem9(1000,0); printf("%d\n",count); for (list<string>::iterator iter=meanprintf.begin();iter!=meanprintf.end();++iter) cout<<*iter<<endl; }
相关文章推荐
- 蓝桥杯 ALGO-30算法训练 入学考试(01背包,动态规划)
- 蓝桥杯 ALGO-31算法训练 开心的金明(01背包,动态规划)
- 蓝桥杯算法训练 开心的金明(01背包,动态规划)
- 蓝桥杯 ALGO-31算法训练 开心的金明(01背包,动态规划)
- 第八届蓝桥杯 包子凑数(动态规划/完全背包+扩展欧几里得)
- 动态规划:HDU-2955-0-1背包问题:Robberies
- 十大算法之一动态规划—解背包问题-C#代码
- 0019算法笔记——【动态规划】0-1背包问题
- 0-1背包问题---动态规划
- [动态规划]背包九讲自解
- 蒸包子凑数 完全背包 蓝桥杯
- 动态规划之背包问题-总结和拓展(二)
- POJ_2392_Space_Elevator_(动态规划,背包)
- hdu 3008:Warcraft(动态规划 背包)
- 完全背包问题(动态规划)(完全背包)
- 算法导论16.2-2--动态规划(0-1背包问题)
- 动态规划——背包问题
- 动态规划求解背包问题(java版本)
- 蓝桥杯 金明的预算方案 有依赖的背包
- HDU 1059 Dividing 多重背包动态规划