勘误
代码清单1-9
1. 第三行opt数组的初始化有误,正确的代码应该是把第0行全部初始化为0,如下:
for(int i = 0; i < T; i++){
opt[i][0] = 0;
}
2. 第三个for循环,循环变量i应该初始化为1。因为第0行已经初始化过了。
算法分析:
动态规划的算法还是不错的。但是解法三的贪心算法其实并不简单,复杂度也不低。针对这一算法的的批评意见可以参考
点击打开链接。另外,由于题目有“每种饮料的容量都是2的方幂“的限制,也就是说,更大容量的饮料可以用较小容量的饮料来代替:如,2=1+1,4=2+2,8=4+4。一种可能想法是,尽量选择单位体积满意度最高的饮料,即,计算每种饮料的H/V,尽量选择值最高的,这么做的结果就是可以用最小的容积获得最大的满意度。