Description
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1)
Input
Output
Sample Input
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
Sample Output
30
dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+A[i][j];
代码如下
#include <stdio.h> #include<algorithm> #include<cstring> int dp[101][101],A[101][101]; using std::max; int main() { //freopen("input.txt","r",stdin); int n; while(~scanf("%d",&n)) { memset(dp,0,sizeof(dp)); for(int j=1;j<=n;j++) for(int i=1;i<=j;i++) scanf("%d",&A[j][i]); 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; }
原文:http://blog.csdn.net/acvcla/article/details/24192055