[没弄清楚]数组分割

《编程之美》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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值