#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...