HDU 2084 DP经典例子---数塔问题
http://acm.hdu.edu.cn/showproblem.php?pid=2084
#include "iostream" #include "cstdio" #include "algorithm" using namespace std; int m[101][101],dp[101][101]; void DP(int n) { for(int i=0;i<n;i++) dp[n-1][i]=m[n-1][i]; for(int i=n-2;i>=0;i--) for(int j=0;j<=i;j++) dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+m[i][j]; } int main() { int n,t; scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=0;i<n;i++) for(int j=0;j<=i;j++) scanf("%d",&m[i][j]); DP(n); printf("%d\n",dp[0][0]); } return 0; }