POJ 3176 Cow Bowling DP

题意:和数塔一样,求最大值。
题解:

#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;
}


你可能感兴趣的:(POJ 3176 Cow Bowling DP)