最大子陣列問題
方法一:暴力求解方法
我們可以很容易地設計出乙個暴力方法來求解本問題:簡單地嘗試沒對可能的子陣列,共有o(n2)種
#includeusing namespace std;
#define int_min 0x80000000
int main()
; int i,j;
int sum=0,maxsum=int_min;
int imax;
for(i=0;i<10;i++)
tuplefindmaximumsubarry(int arr,int low,int high)
}int main()
; tupleresult=findmaximumsubarry(arr,0,9);
cout<(result)<<" "<(result)<<" "<(result)《方法三:使用動態規劃的演算法(o(n))
#includeusing namespace std;
int maxarraysum(int arr,int n)
if(maxsum}
cout<<"max sum: "
}int main()
; cout<}
演算法導論第四章 最大子陣列問題
注 書上的分治演算法複雜度太大,選擇動態規劃演算法 題目 輸入乙個整型陣列,資料元素有正數也有負數,求元素組合成連續子陣列之和最大的子陣列,要求時間複雜度為o n 例如 輸入的陣列為1,2,3,10,4,7,2,5,最大和的連續子陣列為3,10,4,7,2,其最大和為18。分析 如果不考慮時間複雜度...
演算法導論 第四章 分治策略 速記
在分治策略中,我們遞迴的求解乙個問題,在每層遞迴中應用如下三個步驟 分解 divide 步驟將問題劃分為一些子問題 子問題的形式與原問題一樣,只是規模更小.解決 conquer 步驟遞迴地求解出子問題,如果子問題的規模足夠小,則停止遞迴,直接求解.合併 combine 步驟將子問題的解組合成原問題的...
第四章 陣列
一維陣列的定義 當陣列中每個元素只帶有乙個下標時,我們稱這樣的陣列為一維陣列。陣列的定義格式如下 型別識別符號 陣列名 常量表示式 說明 陣列名的命名規則與變數名的命名規則一致。常量表示式表示陣列元素的個數。可以是常量和符號常量,但不能是變數。例如 int a 10 陣列a定義是合法的 int b ...