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

2022-08-17 17:33:21 字數 807 閱讀 8012

7-2 最大子段和 (40 分)

給定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

給出一段序列,求其中一段連續序列的最大值。

遞推方程式:dp[i] += dp[i-1];

易知當一段序列和為負數的時候必定不會是最大值。

設定乙個a陣列將存放整數

在迴圈過程中,用乙個ans記錄最大值。

int n;

int a[10005];

while(scanf("%d",&n)!=-1)

cout《時間複雜度:1 + n * ( 1 + 1 + 1 * ( 1 + 1 ) ) + 1 = 1 + n + 1 =o(n)

空間複雜度:1 + 1 + 1 + 1 =o(1)

和隊友一起研究了一下,第一第二題基本大同小異,在第三題卡了很久,最後發現是區域性變數占用記憶體太多,設定全域性變數就解決了。

第三章實踐報告

1.實踐題目 7 1 數字三角形 30 分 給定乙個由 n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形 的頂至底的一條路徑 每一步可沿左斜線向下或右斜線向下 使該路徑經過的數字總和最大。2.問題描述 輸入有n 1行 第 1 行是數字三角形的行數 n,1 n 100。接下來 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 由題目可知從上到下,只能往左或者往右...