#include
#include
#include
#define maxk 1e7
clock_t start,stop;
double duration;
/*一種複雜度為o(n^3)的暴力解法*/
int maxsubseqsum1(int a,int n)
}return maxsum;
}/*複雜度為o(n^2)的演算法*/
int maxsubseqsum2(int a,int n)
}return maxsum;
} /*分而治之演算法,複雜度為o(nlogn)*/
int max3( int a, int b, int c )
int divideandconquer( int list, int left, int right )
// 左邊掃瞄結束
maxrightbordersum = 0; rightbordersum = 0;
for( i = center + 1; i <= right; i++ ) //右邊掃瞄結束
//下面返回"治"的結果
return max3( maxleftsum, maxrightsum,
maxleftbordersum + maxrightbordersum );
}int maxsubseqsum3( int list, int n )
int maxsubseqsum4(int a,int n)
return maxsum;
} int main()
start=clock();
for(int i=0;i//重複呼叫函式以獲得充分多的時鐘打點數
maxsubseqsum1(a,n);
stop=clock();
duration=((double)(stop-start))/clk_tck/maxk;
printf("%d\n",maxsubseqsum1(a,n));
printf("ticks1=%f\n",(double)(stop-start));
printf("duration1=%6.2e\n",duration);
start=clock();
for(int i=0;i//重複呼叫函式以獲得充分多的時鐘打點數
maxsubseqsum2(a,n);
stop=clock();
duration=((double)(stop-start))/clk_tck/maxk;
printf("%d\n",maxsubseqsum2(a,n));
printf("ticks2=%f\n",(double)(stop-start));
printf("duration2=%6.2e\n",duration);
start=clock();
for(int i=0;i//重複呼叫函式以獲得充分多的時鐘打點數
maxsubseqsum3(a,n);
stop=clock();
duration=((double)(stop-start))/clk_tck/maxk;
printf("%d\n",maxsubseqsum3(a,n));
printf("ticks3=%f\n",(double)(stop-start));
printf("duration3=%6.2e\n",duration);
start=clock();
for(int i=0;i//重複呼叫函式以獲得充分多的時鐘打點數
maxsubseqsum4(a,n);
stop=clock();
duration=((double)(stop-start))/clk_tck/maxk;
printf("%d\n",maxsubseqsum4(a,n));
printf("ticks4=%f\n",(double)(stop-start));
printf("duration4=%6.2e\n",duration);
return
0; }
C 解決最大子列和問題,演算法時間複雜度優化
問題描述很簡單,對於給定的整數a1,a2,an 可能有負數 求ak a2 aj的最大值 k 串數的和最大非空連續子陣列。為了方便起見,如果所有的整數均為負數,則最大的子串行和為0 演算法1 窮舉演算法 計算並返回所最大子串行的和 窮舉遍歷 int maxsubsum1 const vector a ...
複雜度1 最大子列和問題
給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。輸入格式 輸入第1行給出正整數 k 100000 第2行給出k個整數,其間以空格分隔。輸出格式...
時間複雜度 最大子列和問題
給定kk k個整數組成的序列,連續子列 被定義為n i 1 njn jn j 其中 1 i j k1 le i le j le k1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各...