最大子串行和問題

2021-06-18 10:41:05 字數 1308 閱讀 5090

問題描述:求-2,11,-4,13,-5,-2 的最大子串行和。

方法一:使用3層for迴圈巢狀,窮舉式的嘗試所有的可能,**如下:

public class demo1 }}

} return maxsum;

}public static void main(string args) ;

system.out.println("最大子串行和為"+d.maxsum(a)); }}

方法二:使用兩個for迴圈巢狀:

public class demo2 

}} return maxsum;

} public static void main(string args) ;

system.out.println("最大子串行和為"+d.maxsum(a)); }}

方法三:使用分治策略,即把問題分成大致相等的子問題,然後遞迴對他們求解,然後得出最後的解。

public class demo3 

else

return 0;

}int center=(left+right)/2; //求整個序列的中間值

int maxleftsum=maxsum(a,left,center); //運用遞迴求左邊的子串行的最大值

int maxrightsum=maxsum(a,center+1,right); // 運用遞迴求右邊的子串行的最大值

int leftsum=0;

int maxleft=0;

for(int i=center;i>=left;i--)

}int rightsum=0;

int maxright=0;

for(int i=center+1;i<=right;i++)

}return max(maxleftsum,maxrightsum,maxleft+maxright);

}public int max(int a,int b,int c)

else

maxnum=c;

}else

if(b>=c)

else

maxnum=c;

return maxnum;

}public static void main(string args) ;

system.out.println("最大子串行和為:"+d.maxsum(a,0,a.length-1)); }}

最大子串行和問題

問題 給定一整數序列a1,a2,an 可能有負數 求a1 an的乙個子串行ai aj,使得ai到aj的和最大 例如 整數序列 2,11,4,13,5,2,5,3,12,9的最大子串行的和為21。對於這個問題,最簡單也是最容易想到的那就是窮舉所有子串行的方法。利用三重迴圈,依次求出所有子串行的和然後取...

最大子串行和問題

問題描述 給定乙個整數序列 可能有負數 求一子串行 記為l 使得該子串行所有元素之和最大。例 給定序列 2,11,4,13,5,2,則最大子串行和為20 11,4,13 方法一 遍歷窮舉 o n 2 略方法二 分治遞迴 o n logn 思路 將輸入序列l分為左右兩個子串行l1和l2,則l 只可能以...

最大子串行和問題

問題 給定一整數序列a1,a2,an 可能有負數 求a1 an的乙個子串行ai aj,使得ai到aj的和最大 例如 整數序列 2,11,4,13,5,2,5,3,12,9的最大子串行的和為21。對於這個問題,最簡單也是最容易想到的那就是窮舉所有子串行的方法。利用三重迴圈,依次求出所有子串行的和然後取...