演算法第三章上機實踐報告

2022-09-19 22:00:21 字數 1022 閱讀 8527

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 using

namespace

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 由題目可知從上到下,只能往左或者往右...

演算法第三章上機實踐報告

引論 這是第二次在演算法課上的上機實踐了,雖然逐漸有了思考演算法的感覺,但這一次上機實踐還是並不輕鬆。關鍵在於在實驗課前對第三章的知識掌握得還不足夠,經常會因為明明知道理論上如何解題而苦於無法將其實現。不過,通過本次上機實踐,我的收穫是非常豐富的,下面用實踐課題目中的第一題 數字三角形 開始分享我的...