Poj 1163 The Triangle

简单dp,貌似题目和3176是一样的。

#include <stdio.h>
int data[360][360];
int dp[360][360];
int n;
int main()
{
	int i,j,k,maxn;

	scanf("%d",&n);
	for (i=0;i<n;i++) {
		for (j=0;j<=i;j++) {
			scanf("%d",&data[i][j]);
		}
	}
	dp[0][0]=data[0][0];
	for (i=1;i<n;i++) {
		for (j=0;j<=i;j++) {
			if (j-1>=0&&i!=j) {
				if (dp[i-1][j-1]>dp[i-1][j])
					dp[i][j]=dp[i-1][j-1]+data[i][j];
				else 
					dp[i][j]=dp[i-1][j]+data[i][j];
			}
			else if (j-1>=0)
				dp[i][j]=dp[i-1][j-1]+data[i][j];
			else 
				dp[i][j]=dp[i-1][j]+data[i][j];
		}
	}
	maxn=dp[n-1][0];
	for (i=0;i<n;i++) {
		if (dp[n-1][i]>maxn)
			maxn=dp[n-1][i];
	}
	printf("%d\n",maxn);
	return 0;
}


你可能感兴趣的:(Poj 1163 The Triangle)