摘要:
分治思想的三个步骤:划分问题递归求解合并问题基础例子一求最大连续和,当然这个问题最好的解决方法是DP,不过通过一些简单的例子来展现一种思想,更加清晰一些。找一串数的最大连续和,那么先把这串数分成两个子串:子串a,子串b(习惯从中间分成两半)。那么最大连续和只可能有三种情形,第一种,在子串a中,第二种,在子串b中,第三种,横跨子串a和b。这样的算法在时间复杂度上位nlogn,还算可以。具体代码和详细说明如下: 1 int maxsum(int *A,int x,int y){ 2 int i,m,v,L,R,max; 3 if(y-x==1) return A[x];//就剩一个元素,直接返回 阅读全文
posted @ 2011-07-04 10:28
geeker
阅读(255)
评论(0)
推荐(1)
浙公网安备 33010602011771号