//求乙個陣列的最大子段和
//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個...