有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}};
如果,这里水果的重量非整数,那需要再增加小数位的包包个数,那将可能是更小的差值。