数塔 HDU - 2084(经典dp)

自底向上dp

#include 
#include 
int dp[105][105];
int a[105][105];

using std::max;
int main()
{
	int r,n;
	scanf("%d",&r);
	while(r--)
	{
		int sum=0;
		int i,j;
		scanf("%d",&n);
		for(i=1;i<=n;i++)
		{
			for(j=1;j<=i;j++)
			{
			scanf("%d",&a[i][j]);
			}
		}
		for( i=1;i<=n;i++)
		{
			dp[n][i]=a[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])+a[i][j];
			}
		}
			printf("%d\n",dp[1][1]);
	}
}

 

你可能感兴趣的:(DP)