最大子串行問題

2021-08-08 22:23:43 字數 897 閱讀 4361

現在我們將敘述兩個演算法來求解最大子串行和問題;

#include ;

int maxsubsequencesum(int a, int n);

int main()

; printf("max=%d", maxsubsequencesum(a, 15));

return0;}

int maxsubsequencesum(int a[15], int n)}}

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

return maxsum;

}

他只是窮舉式的嘗試所有可能,for迴圈中的迴圈變數反應c中陣列從0開始而不是從1開始這乙個事實。執行時間為o(n^3),這完全取決於for迴圈的層數。第二個迴圈 大小為n-i,他可能要小,但也可能是n。我們必須假設最壞的情況,而這也可能使最終的界有些大。第三個迴圈的大小為j-i+1,我們也要假設他的大小為n。因此總數為o(1*n*n)=o(n^3)。
#include ;

int maxsubsequencesum(int a, int n);

int main()

printf("max=%d", maxsubsequencesum(a, 15));

return0;}

int maxsubsequencesum(int a[15], int n)}}

return maxsum;

}

該方法採用一種「分治」的策略。其想法是把乙個問題劃分成兩個大致相等的兩個子問題,然後遞迴的對他們求解,這是「分」部分。「治」階段是將兩個子問題的解合併到一起,並可能在做些少量的附加工作,最後得到整個問題的解。

最大子串行問題

問題描述 輸入一組整數,求出這組數字子串行和中最大值。也就是只要求出最大子串行的和,不必求出最大的那個序列。例如 序列 2 11 4 13 5 2,則最大子串行和為20。複雜度為o n 2 的演算法 include include int maxsubseqsum const int a,int n...

最大子串行問題

題目 給定乙個整數列 可能有負數 求該整數列每個子串行的和的最大值,如果都為負數則結果為0 例如 對於輸入 2,11,4,13,5,2 答案為20 從11 到 13,即就是 11 4 13 20 粗略 如下 已測試通過 include using namespace std arr 目標陣列,len...

最大子串行之和問題

最大子串行之和問題 這個問題非常有趣,因為有很多中演算法可以解決這個問題。而這些演算法的執行效率也多種多樣。下面我們將看到四種演算法,演算法複雜度從指數一直過渡到線性複雜度。充分體現了演算法的優劣對執行效率的影響。第一種 intmaxsubsum1 const vector a return max...