1.實踐題目
7-2最大子段和 給定n個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均為負數時,定義子段和為0。
要求演算法的時間複雜度為o(n)。
輸入有兩行:
第一行是n值(1<=n<=10000);
第二行是n個整數。
輸出最大子段和。
在這裡給出一組輸入。例如:
6
-2 11 -4 13 -5 -2
在這裡給出相應的輸出。例如:
20
#include usingnamespace
std;
int n,a[10001
];int
main()
int sum = 0,b = 0
;
for(int i =1;i <= n;i++)
cout
}
一番討論過後,我們決定首先建立乙個陣列存放值,另外還設了b用於暫時存放最大子段和的值,並通過與最終值sum比較來確定最終最大子段和的值
**如下:
for(int i =1;i <= n;i++)
時間複雜度:o(n)
空間複雜度:o(n)
本次實踐我和我的隊友彥君完成了兩題,主要是在第一題花的時間比較多,期間我們討論了很多,可能是當時對於動態規劃的思想還掌握不夠的原因,我們的程序要落後其他同學很多,不過最後我們還是解決了問題,彼此也收穫了很多;
第二題的話由於本身題型比較簡單,並且書上也相關的例子,所以我們沒有花費太多的時間就解決了,但是由於我對題目的理解出現了偏差,導致不能夠給予老師滿意的回答,不過我最終還是在彥君的幫助下通過了,這讓我對於動態規
劃思想的理解更加深刻了。
演算法第三章上機實踐報告
一 實踐題目 7 2 最大子段和 給定n個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的子段和的最大值。當所給的整數均為負數時,定義子段和為0。要求演算法的時間複雜度為o n 輸入格式 輸入有兩行 第一行是n值 1 n 10000 第二行是n個整...
演算法第三章上機實踐報告
7 1 數字三角形 30 分 給定乙個由 n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形 的頂至底的一條路徑 每一步可沿左斜線向下或右斜線向下 使該路徑經過的數字總和最大。1.路徑經過的數字總和最大 2.每一步可沿左斜線向下或右斜線向下 1 由題目可知從上到下,只能往左或者往右...
演算法第三章上機實踐報告
引論 這是第二次在演算法課上的上機實踐了,雖然逐漸有了思考演算法的感覺,但這一次上機實踐還是並不輕鬆。關鍵在於在實驗課前對第三章的知識掌握得還不足夠,經常會因為明明知道理論上如何解題而苦於無法將其實現。不過,通過本次上機實踐,我的收穫是非常豐富的,下面用實踐課題目中的第一題 數字三角形 開始分享我的...