经典dp

数字三角形

#include<bits/stdc++.h>
using namespace std;
int r;
int a[1005][1005];
int dp[1005][1005];
int main()
{
	cin >> r;
	for(int i=1;i<=r;i++)
		for(int j=1;j<=i;j++)
			cin >> a[i][j];
	for(int i=r;i>=1;i--)
	{
		for(int j=1;j<=i;j++)
		{
			dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+a[i][j];
		}
	}
	cout << dp[1][1] << endl;
	return 0;
}

也有记忆搜索的做法

posted @ 2022-06-09 18:53  风乐  阅读(41)  评论(0)    收藏  举报