乙個高度為n的由正整數組成的三角形,從上走到下,求經過的數字和的最大值。
每次只能走到下一層相鄰的數上,例如從第3層的6向下走,只能走到第4層的2或9上。
8 43 6 9
7 2 9 5
例子中的最優方案是:5 + 8 + 6 + 9 = 28
input
第1行:n,n為數塔的高度。(2 <= n <= 500)
第2 - n + 1行:每行包括1層數塔的數字,第2行1個數,第3行2個數......第k+1行k個數。數與數之間用空格分隔(0 <= a[i] <= 10^5) 。
output
輸出最大值
input示例
4
58 4
3 6 9
7 2 9 5
output示例
28
動態規劃
#include#include#include#include#include#include#include#include#define inf 0x3f3f3f
#define ll long long
#define maxn 505
using namespace std;
int a[maxn][maxn];
int dp[maxn][maxn];
int main()
}int maxx=0,j;
for(int i=1;i<=n;i++)
// maxx=max(maxx,dp[i][j]);
//cout<}
cout
}
51nod 1002 數塔取數問題 dp
乙個高度為n的由正整數組成的三角形,從上走到下,求經過的數字和的最大值。每次只能走到下一層相鄰的數上,例如從第3層的6向下走,只能走到第4層的2或9上。8 43 6 9 7 2 9 5 例子中的最優方案是 5 8 6 9 28 收起第1行 n,n為數塔的高度。2 n 500 第2 n 1行 每行包括...
51nod 1002 數塔取數問題(簡單DP)
乙個高度為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為數塔的高度。2 n 500 第2 n ...
51 nod 1002 數塔取數問題
思路 這是一道典型的動態規劃問題。最簡單的dp 考慮從底層的結點開始計算。假定從上往下的層數記為 1 n 第i層走到第i 1層取決於 第i 1層結點的最大值。具體實現時 用乙個一維陣列儲存從底往上的結果,可以減小空間複雜度。注 本文給出的演算法時間複雜度 o n include include in...