51 nod 1002 數塔取數問題

2021-07-09 15:28:40 字數 559 閱讀 8440

思路:

這是一道典型的動態規劃問題。(最簡單的dp)

考慮從底層的結點開始計算。【假定從上往下的層數記為:1-n】

第i層走到第i+1層取決於 第i+1層結點的最大值。

具體實現時 用乙個一維陣列儲存從底往上的結果,可以減小空間複雜度。

注:本文給出的演算法時間複雜度 o(n)

#include #include #include #include #include #include#define max(a,b) ((a) > (b) ? (a) :(b))

using namespace std;

int main()

// 從倒數第二層的結點開始

k = k - n;

// 若按照從上到下 從左到右的次序對結點計數

// 從倒數第二層的最後乙個結點開始 決策往左還是往右

for(i = k - 1 , j = 0 ; i >= 0; i--)

}printf("%d\n",a[0]);

return 0;

}

51nod 1002 數塔取數問題

1002 數塔取數問題 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 乙個高度為n的由正整數組成的三角形,從上走到下,求經過的數字和的最大值。每次只能走到下一層相鄰的數上,例如從第3層的6向下走,只能走到第4層的2或9上。5 8 4 3 6 9 7 2 9 5 例...

51Nod 1002 數塔取數問題

因為5 31晚停電,所以6 1補上 乙個高度為n的由正整數組成的三角形,從上走到下,求經過的數字和的最大值。每次只能走到下一層相鄰的數上,例如從第3層的6向下走,只能走到第4層的2或9上。5 8 4 3 6 9 7 2 9 5 例子中的最優方案是 5 8 6 9 28 input 第1行 n,n為數...

51nod 1002 數塔取數問題

1002 數塔取數問題 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 收藏關注乙個高度為n的由正整數組成的三角形,從上走到下,求經過的數字和的最大值。每次只能走到下一層相鄰的數上,例如從第3層的6向下走,只能走到第4層的2或9上。58 4 3 6 9 7 2 9 ...