演算法學習 最大子段和

2021-10-02 22:05:46 字數 1037 閱讀 5669

//求乙個陣列的最大子段和

//1.列舉法 時間複雜度o(n2)

//2.遞推法 時間複雜度o(n)

#include

#include

#include

#include

#include

#define len 10

typedef

int* intp;

typedef

int*

* intpp;

using

namespace std;

//隨機生成乙個數值為min到max的,大小為num的陣列

intp randarray

(int num)

return arr;

}//列舉o(n2)

intgetmaxsubarray_1

(intp arr,

int low,

int high)

sum =0;

}return maxsum;

}//遞推o(n)

intgetmaxsubarray_2

(intp arr,

int low,

int high)

else

maxsum =

max(sum, maxsum);}

return maxsum;

}//遞推o(n)

/*返回乙個陣列arr

arr[0]:最大子段和

arr[1]:最大欄位和的左端下標

arr[2]:最大子段和的右端下標

*/intp getmaxsubarray_3

(intp arr,

int low,

int high)

else

//subarr[0] = max(sum, subarr[0]);

if(sum > subarr[0]

)}return subarr;

}int

main()

最大子段和演算法分析

最大子段和問題 maximum interval sum 一.問題描述 給定長度為n的整數序列,a 1.n 求 1,n 某個子區間 i j 使得a i a j 和最大.或者求出最大的這個和.例如 2,11,4,13,5,2 的最大子段和為20,所求子區間為 2,4 二.演算法分析 1.窮舉法 1 i...

最大子段和

設a 是n個整數的序列,稱為該序列的子串行,其中1 i j n.子串行的元素之和稱為a的子段和.例如,a 2,11,4,13,5,2 那麼它的子段和是 長度為1的子段和 2,11,4,13,5,2 長度為2的子段和 9,7,9,8,7 長度為3的子段和 5,20,4,6 長度為4的子段和 18,15...

最大子段和

問題表述 n個數 可能是負數 組成的序列a1,a2,an.求該序列 例如 序列 2,11,4,13,5,2 最大子段和 11 4 13 20。1 窮舉演算法 o n3 o n2 2 分治法 將序列a 1 n 從n 2處截成兩段 a 1 n 2 a n 2 1 n 例項 三 最大子段和 問題表述 n個...