1. 程式人生 > >第三章實踐

第三章實踐

1.實踐題目
數字三角形

2.問題描述
給定一個由 n行數字組成的數字三角形如下圖所示。試設計一個演算法,計算出從三角形 的頂至底的一條路徑(每一步可沿左斜線向下或右斜線向下),使該路徑經過的數字總和最大。

3.演算法描述
遞迴式為:b[i][j]=max(b[i+1][j]+a[i][j],b[i+1][j+1]+a[i][j])
從下往上加,比較相鄰兩個數大小,加上大的那個數,填入記錄的陣列中,不斷以此類推。

4.演算法時間及空間複雜度分析(要有分析過程)
時間複雜度:主體為兩個for迴圈,所以時間複雜度為O(n^2)
空間複雜度:n^2

5.心得體會(對本次實踐收穫及疑惑進行總結)
一開始沒有運用到動態規劃的思想,用了大量的判斷和迴圈。後來經老師提醒,改變了思路,把遞迴式推了出來,問題就迎刃而解了。所以以後再遇到這種最優解的情況,應首先考慮動態規劃演算法。