<<c>>背包问题(Knapsack)
2016-04-05 00:54
232 查看
有4水果,重量,价格如下:
0 李子 4kg ¥4500
1 苹果 5kg ¥5700
2 橘子 2kg ¥2250
3 草莓 1kg ¥1100
4 甜瓜 6kg ¥6700
weight[]=[4,5,2,1,6]; value[]=[4500,5700,2250,1100,6700];
有个8kg包包,希望可以装最大价值的水果,该怎样装?
package[3][]={{0,0,0},{1,0,0},{2,0,0},{3,0,0},{4,0,0},{5,0,0},{6,0,0},{7,0,0},{8,0,0}};
加入0 李子 4kg ¥4500 :
用8个重量依次增加的包包组合,来装0,有2种选择,装入与不装的价值比较,选优;
void putInto(){ for(int i=0;i<5;i++){ for(int b=weight[i];b<9;b++){ if(package[1][b]<value[i]+value[b-weight[i]]) package[i][b]=value[i]+value[b-weight[i]]; }; } } package[3][0]={{0,0,0},{1,0,0},{2,0,0},{3,0,0},{4,4500,0},{5,4500,0},{6,4500,0},{7,4500,0},{8,9000,0}};
加入1 苹果 5kg ¥5700:
用8个重量依次增加的包包组合,来装1,有2种选择,装入与不装的价值比较,选优;
package[3][1]={{0,0,0},{1,0,0},{2,0,0},{3,0,0},{4,4500,0},{5,5700,1},{6,5700,1},{7,5700,1},{8,9000,0}};
加入2 橘子 2kg ¥2250:
用8个重量依次增加的包包组合,来装2,有2种选择,装入与不装的价值比较,选优
package[3][2]={{0,0,0},{1,0,0},{2,2250,2},{3,2250,2},{4,4500,0},{5,5700,1},{6,6750,2},{7,7950,2},{8,9000,0}};
加入3 草莓 1kg ¥1100:
用8个重量依次增加的包包组合,来装3,有2种选择,装入与不装的价值比较,选优
package[3][3]={{0,0,0},{1,1100,3},{2,3350,2},{3,2250,2},{4,4500,0},{5,5700,1},{6,6800,3},{7,7950,2},{8,9050,3}};
加入4 甜瓜 6kg ¥6700:
用8个重量依次增加的包包组合,来装4,有2种选择,装入与不装的价值比较,选优
package[3][4]={{0,0,0},{1,1100,3},{2,3350,2},{3,2250,2},{4,4500,0},{5,5700,1},{6,6800,3},{7,7950,2},{8,9050,3}};
如果,这里水果的重量非整数,那需要再增加小数位的包包个数,那将可能是更小的差值。
相关文章推荐
- VC 中与字符串相关的宏 _T、TEXT,_TEXT、L 的作用(简单明了)
- 《大型网站技术架构:核心原理与案例分析》
- leetcode:排序数组之后相邻数的最大差
- django之异常错误
- Linux的进程调度时机(Schedule函数何时调用)
- install firebox on ubuntu
- LeetCode 223. Rectangle Area(两个矩形的复合面积计算)
- linux进程调度之总章:一些片汤话
- javascript中运算符有哪些? 他们的优先级 呢?
- Animation动作完成后停顿一段时间再次重复
- 内存泄露检测工具(25款)
- django之创建第6-1个项目-自定义过滤器
- 关于真机测试的android选择图片在ImageView上显示,调用setImageBitmap无法显示和闪退、控件消失
- 学习angular
- Nexus私服使Maven更加强大
- php模式设计之 注册树模式
- C++作业2
- LeetCode 8 String to Integer (atoi)
- cocos2dx 3.10 Win32和Android引用libcurl库路径问题
- 谈VC++对象模型