最大子串行和的四種求解方法

2021-09-01 12:17:20 字數 643 閱讀 7271

//最大子串行和問題

#include#includeusing namespace std;

const int maxn = 100 + 5;

//分治

int maxz(int a,int x,int y)//返回陣列左閉右開區間的最大和

v = 0;r = a[m];

for(int i = m;i < y;i++)

return max(maxs,l + r);//把子問題與l+r比較

}int main()

for(i = 0;i < n;i++)

cout

sum[0] = a[0];

for(int i = 1; i < n - 1;i++)

for(int i = 0;i < n;i++)

cout

for(i = 0;i < n;i++)

ans = max(ans,sum[k]);//得到每乙個區間的最大和}}

//簡單的優化

sum[0] = a[0];

for(i = 1;i < n - 1;i++)

for(i = 0;i < n;i++)

}cout<}

最大子串行和的四種演算法

1.窮舉法 演算法思想 算出每個子串行的和,即算出序列中第i個到第j個數的和 j i 並進行比較 演算法 public static int maxsubsum1 int a if sum maxsum return maxsum 執行時間為o n 3 2.對上述第乙個演算法的改進 演算法思想 第乙...

最大子串行和的四種演算法

算出每個子串行的和,即算出序列中第i個到第j個數的和 j i 並進行比較。執行時間為o n 3 maxsum 0 nums d n int input 輸入陣列長度 for i in range 0 n k int input 輸入資料 for i in range 0 len nums for j...

最大子串行和問題的四種求解以及他們的時間複雜度

最大子串行求和的問題就是對於給定的整數數列 裡面可能有負數 a1,a2,an,求ai到ak的和的最大值。例如 2,11,4,13,5,2 這個數列的最大子串行和就是11 4 13 20。下面用四種方法實現這個功能。時間複雜度依次減小。用三個for迴圈 public class maxsubsum i...