《编程之美》2.18,数组分割
动态规划思路:假设完成分割需要2N个步骤,第K步完成了前k个元素中任意i(0<i<=k)个元素和在集合Sk中;然后将K分成两小步,首先计算得到k-1个元素中任意i(0<i<=k-1)个元素和的几何Sk-1 = {vi}。那么第二步就是:Sk=Sk-1 || {vi + arr[k]}。
for(k=1;k<=2*n;k++){
i_max = min(k-1,n-1);
for(i=i_max;i>=0;i--){
for each v in Heap[i]
insert(v+arr[k],Heap[i+1])
}
}
但不是很理解: i_max = min(k-1,n-1)
加入n=10,当k=10,11。。。时,那i_max不就一直是n-1为9吗,那接下来有什么意义?
参考:
http://blog.youkuaiyun.com/tianshuai11/article/details/7828907