HDU_2084_DP
http://acm.hdu.edu.cn/showproblem.php?pid=2084
简单dp,从下到上,从左到右,依次更新每个位置最大值。
#include<iostream> #include<cstdio> using namespace std; int a[105][105],dp[105][105]; int main() { int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); for(int i = 1;i <= n;i++) { for(int j = 1;j <= i;j++) scanf("%d",&a[i][j]); } for(int i = 1;i <= n;i++) dp[n][i] = a[n][i]; for(int i = n-1;i >= 1;i--) { for(int j = 1;j <= i;j++) dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+a[i][j]; } printf("%d\n",dp[1][1]); } return 0; }