小白乙隻,這個程式想實現輸入乙個陣列,求出最大子列和,能執行但是不對。可否給予我一些指點。
#include
intmax3
(int a,
int b,
int c )
intdivideandconquer
(char list,
int left,
int right )
/*下面是「分 」的過程*/
center =
(left+right)/2
;/*找到中分點*/
/*遞迴求得兩邊子列的最大和*/
maxleftsum=
divideandconquer
(list, left, center)
; maxrightsum=
divideandconquer
(list, center+
1, right)
;/*下面求跨分界線的最大子列和*/
maxleftbordersum=0;
leftbordersum=0;
for(i=center; i>=left; i--
) maxrightbordersum=0;
rightbordersum=0;
for(i=center+
1; i<=right; i++
)/*下面返回「治 」的結果*/
return
max3
(maxleftsum, maxrightsum, maxleftbordersum+maxrightbordersum);}
intmaxsubseqsum3
(char list,
int n )
intlength
(char list)
intmain()
分而治之 最大子列和
2 從中間開始分 if left right int mid left right 2 maxleft mergesort a,left,mid 左邊掃瞄 maxright mergesort a,mid 1,right 右邊掃瞄 利用遞迴的思想對a n 不斷分,分到最小為乙個數,再不斷合併處理 從...
求最大子列和
給定乙個含有n整數的序列,求其最大子列和 即該序列中一段連續子串行和的最大值 大致思路是 定義乙個當前位置之前的序列和的最大值 maxsum 以及當前子串行的和 thissum 每迭代一次比較二者的大小關係,如果maxsum小於thissum,則更新maxsum,否則繼續遍歷。當thissum 0時...
求最大子列和問題
給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。在此方法中用了三個迴圈,第一層是子列左端,第二層是子列右端,裡層為子列的求和。t n o n 3 int thissum maxsum 0 i...