本文主要是介绍[没弄清楚]数组分割,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《编程之美》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.csdn.net/tianshuai11/article/details/7828907
这篇关于[没弄清楚]数组分割的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!