這個問題也是簡單dp問題
題意: 給定乙個由n行數字組成的數字三角形,如下圖所示:
7 3 8
8 1 0
2 7 4 4
4 5 2 6 5
試設計乙個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大(
每一步只能從乙個數走到下一層上和它最近的左邊的數或者右邊的數)。
輸入:先輸入三角形的行數n,以後的每一行都是該行中的數。
輸出:從頂到底的一條路徑使的經過的數字總和最大。(這個例子是30:7+3+8+7+5)
解題思路:這個也是簡單的dp,需要從底向上考慮,用二維陣列dp[i][j]和a[i][j]。a[i][j]是對應的三角形數,dp[i][j]是到達第i行第j個數的最大路徑,這裡的狀態轉移方程是從倒數第二行開始,dp[n-1][j]=max(a[n-1][j]+dp[n+1][j],a[n-1][j]+dp[n+1][j+1])
很好理解噠附上**~
#include#include#include#includeint dp[200][200], a[200][200];
int n;
int max(int a, int b)
int main()
} for (int j = 1; j <= n; j++)
for (int i = n - 1; i >= 1; i--) }
printf("%d\n", dp[1][1]);
return 0;
}
一起學動態規劃~有問題私聊哦~ 麼麼噠 數字三角形(簡單dp)
數字三角形 給定乙個由 n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形 的頂至底的一條路徑 每一步可沿左斜線向下或右斜線向下 使該路徑經過的數字總和最大。輸入有n 1行 第 1 行是數字三角形的行數 n,1 n 100。接下來 n行是數字三角形各行中的數字。所有數字在0.99 ...
dp 數字三角形問題
數字三角形問題 time limit 1000 ms memory limit 65536 kib problem description 給定乙個由n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。對於給定的由n行數字組成的數字三角...
DP 數字三角形 找錢問題
thinking 找錢問題 最少張,從小面額開始找,如果遇到乙個張面額可以整mod或者此時錢總和 該面額存在,那麼取這個面額,dp思想。數字三角形 include define maxn 999 int map1 maxn maxn int map2 maxn maxn int map3 maxn ...