問題描述:求-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。對於這個問題,最簡單也是最容易想到的那就是窮舉所有子串行的方法。利用三重迴圈,依次求出所有子串行的和然後取...