最大子串行和問題 C

2021-08-14 15:14:04 字數 1456 閱讀 9557

最大子串行和(maxsubseqsum)

int maxsubseqsum(int arrays,int

length)

if(thissum>maxsum)maxsum=thissum;};}

return maxsum;

}

最大子串行和改進1(maxsubseqsum)
int maxsubseqsum(int arrays,int

length);

}return maxsum;

}

最大子串行和(maxsubseqsum)–分治法

演算法複雜度:t(n)=o(nlgn)

int maxsubseqsum(int arrays, int

left, int

right) else

int finalrightsum = 0, thisrightsum = 0;

for (int j = middle + 1; j < right; j++)

sum = finalleftsum + finalrightsum;

printf("left sum is %d,right sum is %d\n",finalleftsum,finalrightsum);

if (sum < leftsum)sum = leftsum;

if (sum < rightsum)sum = rightsum;

}return sum;

}

測試主函式
int main() ;

int result = maxsubseqsum(array,0,7);

printf("result is %d\n", result);

}

執行結果

為了方便觀察,我們將每次左右兩邊求得的最大子串行最大和都列印出來

「` f:\clionproject\datastruct\cmake-build-debug\datastruct.exe

left sum is 1,right sum is 6

left sum is 0,right sum is 4

left sum is 7,right sum is 0

left sum is 2,right sum is 0

left sum is 6,right sum is 0

left sum is 0,right sum is 6

left sum is 6,right sum is 5

result is 11

process finished with exit code 0

「`

我的文章列表

email:[email protected]

最大子串行和問題

問題 給定一整數序列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 只可能以...

最大子串行和問題

問題描述 求 2,11,4,13,5,2 的最大子串行和。方法一 使用3層for迴圈巢狀,窮舉式的嘗試所有的可能,如下 public class demo1 return maxsum public static void main string args system.out.println 最大...