最大子段和

2022-02-06 02:16:43 字數 892 閱讀 2427

最大子段和:給出乙個陣列,計算其中連續的最大的子段和

執行**,及執行思想:

/*

* * 動態規劃:計算最大子段和

* 演算法描述:

* 陣列a 有n個元素, 記 s[i] 為從a到a[i]中,包含a[i]的最大子段和

* 則: s[i] 的值為: s[i-1]>0時, s[i-1]+a[i]

* 否則 a[i] */

#include

#include

int maxsub(int *a, intn)

else

si_1 =si;

if (si>max)

}//找到最大子段和的位置

for (i=max_pos; i>=0; i--)

if (p[i]==0

)

break

;

//即i..max_pos為最大子段和的元素

printf("

%d--%d:%d\n

", i, max_pos, max);

free(p);

p =null;

return

max;

}int

main()

; maxsub(a, n);

return0;

}

源**摘自:

執行結果:

最大子段和

設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個...

最大子段和

再給頂的n個數的陣列中選出連續的若干個數,使得他們的和是最大的,即最大連續自序列和.列如.序列.1 2 3 1 6 5 9 結果 當取子串行 3,1,6,5,9 結果12 我的思路.1.最大連續子串行的開頭是在1.n之中.的最大連續和 2.求出以i,開頭的最大連續和,此時開頭已經確定了,那麼通過列舉...