最大子串行和演算法

2021-03-31 08:56:29 字數 1344 閱讀 5427

#include "stdio.h"

//演算法1:

int maxsubsequencesum1(const int a, int n)

int thissum, maxsum, i, j, k;

maxsum = 0;

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

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

thissum = 0;

for(k = i; k <= j; k++)

thissum += a[k];

if(thissum > maxsum)

maxsum = thissum;

return maxsum;

//演算法2:

int maxsubsequencesum2(const int a, int n)

int thissum, maxsum, i, j;

maxsum = 0;

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

thissum = 0;

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

thissum += a[j];

if(thissum > maxsum)

maxsum = thissum;

return maxsum;

//演算法4:

int maxsubsequencesum4(const int a, int n)

int thissum, maxsum, i;

thissum = maxsum = 0;

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

thissum += a[i];

if(thissum > maxsum)

maxsum = thissum;

else if(thissum < 0)

thissum = 0;

return maxsum;

//測試

int main()

int a = ;

int size = sizeof(a) / sizeof(a[0]);

printf("maxsubsequencesum1 :%d/n", maxsubsequencesum1(a, size));

printf("maxsubsequencesum2 :%d/n", maxsubsequencesum2(a, size));

printf("maxsubsequencesum4 :%d/n", maxsubsequencesum4(a, size));

return 0;

最大子串行和演算法

題目 求a i 中和最大的子串行。時間複雜度o nlogn 使用分治 遞迴的方法。分別求出左邊n 2長度的最大子串行和 右邊n 2長度的最打字序列和 以及橫跨這兩部分且通過中間的最大和 要分別求出兩邊帶有最中間邊界的最子大序列和,將其相加 由於不是最簡單的方法,這裡不再贅述。時間複雜度o n 遍歷一...

演算法 最大子串行和

最大子串行和的問題,資料結構與演算法一書分析中給出了四種演算法,最優的演算法的時間複雜度為o n 1 定義控制台應用程式的入口點。2 34 include stdafx.h 5 include 6 using namespace std 7int maxsubsequesum const int a...

演算法 最大子串行和

最大子串行和的問題,資料結構與演算法一書分析中給出了四種演算法,最優的演算法的時間複雜度為o n 1 maxsubsequencesum.cpp 定義控制台應用程式的入口點。2 3 4 include stdafx.h 5 include 6 using namespace std 7 int ma...