題目大意就是讓你選出一段和最大的連續序列,當有幾個序列和並列時,選出下標最小的的連續序列。
可以採用動態規劃的思想解決,設一連續序列為a[0],a[1],...,a[n],分別以a[0],a[1],...,a[n]結尾的最大序列和為d[0],d[1],...,d[n]
若d[i-1]>0,則d[i]=d[i-1]+a[i],若d[i-1]<0,則d[i]=a[i],則d[i]為結尾的最大序列和為max(a[i],d[i-1]+a[i]),最大序列和為max(d[0],...,d[n])
設sum=0,sum+=a[i]
若sum<0,則最長子序列的下標從i+1開始,並且令sum=0,這一步相當於d[i]<0,則d[i+1]=a[i+1]
下面附上ac**
#includeusing namespace std;
int main()
if(sum<0)
}printf("case %d:\n%d %d %d\n",k,maxs,maxl,maxr);
if(k!=n) printf("\n");
}return 0;
}
動態規劃 最大連續子串行和
動態規劃 最大連續子串行和 問題描述 給定乙個數字序列a1,a2,an,求i,j 1 i j n 使得ai aj最大,輸出這個最大和。樣例 211 413 5 2顯然 11 4 13 20 為和最大的選取情況,因此最大和為20 下面介紹動態規劃的做法,複雜度為o n 讀者會發現其實左端點的列舉是沒有...
動態規劃 最大連續子串行和
給定乙個數字序列,a1,a2,an,求i,j 1 i j n 使得ai aj最大,輸出這個最大和。樣例輸入 2 11 4 13 5 2 輸出 20 即11 4 13 20 最大 分析 如果暴力做的話,乙個列舉,需要o n 2 在計算需要o n 一共需要o n 3 因為重複計算的太多了,還是設定乙個d...
動態規劃 最大連續子串行和
在刷力扣題的時候遇到了乙個連續子陣列最大和問題,下面是題目的鏈結和描述 輸入乙個整型陣列,陣列中的乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為o n 輸入 nums 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。時間...