OpenJ_Bailian - 2760 数字三角形

https://vjudge.net/problem/OpenJ_Bailian-2760

从下往上

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n,t;
int g[110][110];
int main()
{
	while(cin>>n)
	{
		memset(g,0,sizeof g);
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=i;j++)
				cin>>g[i][j];
		}
		
		for(int i=n-1;i>=1;i--)
		{
			for(int j=1;j<=i;j++)
			{
				g[i][j]=max(g[i+1][j],g[i+1][j+1])+g[i][j];
			}
		}
		cout<<g[1][1]<<endl;
	}
	return 0;
 } 

从上往下

#include <iostream>
#include<cstring>
using namespace std;
const int N=510,INF=1e9;
int n;
int f[N],a[N];
int main()
{
	cin>>n;
	memset(f,0,sizeof f);
	cin>>f[1];
	for(int i=2; i<=n; i++)
	{
		for(int j=1; j<=i; j++) cin>>a[j];

		for(int j=i; j>=1; j--) f[j]=max(f[j-1],f[j])+a[j];
	}
	int res=0;
	for(int i=1; i<=n; i++) res=max(res,f[i]); //最大值在第n层的某一个点取得
	cout<<res<<endl;
	return 0;
}

posted @ 2021-07-30 09:42  斯文~  阅读(26)  评论(0)    收藏  举报

你好!