现在的位置: 首页 > 综合 > 正文

POJ1163 The Triangle

2014年08月29日 ⁄ 综合 ⁄ 共 909字 ⁄ 字号 评论关闭

从n行到第一行的:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<cmath>
#include<memory.h>

using namespace std;

int dp[102][102];

int main()
{
	int n,i,j;
	memset(dp,0,sizeof(dp));
	cin>>n;
	for(i=0;i<n;i++)
	{
		for(j=0;j<=i;j++)
		{
			cin>>dp[i][j];
		}
	}
	for(i=n-2;i>=0;i--)
	{
		for(j=0;j<=i;j++)
		{
			dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1]);
		}
	}
	cout<<dp[0][0]<<endl;
	return 0;
}

从1到n:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<cmath>
#include<memory.h>

using namespace std;

int dp[102][102];

void clear()
{
	memset(dp,0,sizeof(dp));
}

int main()
{
	int n,i,j;
	while(scanf("%d", &n)!=-1)
	{
		for(i=1;i<=n;i++)
			for(j=1;j<=i;j++)
				scanf("%d",&dp[i][j]);
		for(i=2;i<=n;i++)
		{
			dp[i][1]+=dp[i-1][1];
			for(j=2;j<i;j++)
			{
				dp[i][j]+=max(dp[i-1][j-1],dp[i-1][j]);
			}
			dp[i][i]+=dp[i-1][i-1];
		}
		int maxn=dp[n][1];
		for(i=1;i<n;i++)
			if(dp[n][i]>maxn) 
				maxn=dp[n][i];
		cout<<maxn<<endl;
	}
	return 0;
}

抱歉!评论已关闭.