题意:和数塔一样,求最大值。
题解:
#include <iostream>
using namespace std;
#define N 355
int dp[N][N], num[N][N];
int max ( int a, int b )
{
return a > b ? a : b;
}
int main()
{
int n, i, j;
//freopen("a.txt","r",stdin);
scanf("%d",&n);
for ( i = 1; i <= n; i++ )
for ( j = 1; j <= i; j++ )
scanf("%d",&num[i][j]);
memset(dp,0,sizeof(dp));
for ( i = 1; i <= n; i++ )
dp[n][i] = num[n][i];
for ( i = n-1; i >= 1; i-- )
{
for ( j = 1; j <= i; j++ )
dp[i][j] = max ( dp[i+1][j], dp[i+1][j+1] ) + num[i][j];
}
printf("%d\n",dp[1][1]);
return 0;
}