拿金币(蓝桥杯算法训练)(C/C++)

一道经典的动态规划

#include <bits/stdc++.h>
using namespace std;

int dp[1000][1000];
int mp[1000][1000];
int N;
int main()
{
	cin>>N;
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<N;j++)
		{
			cin>>mp[i][j];
		}
	}
	dp[0][0]=mp[0][0];
	for(int i=1;i<N;i++)
	{
		dp[i][0]=mp[i][0]+dp[i-1][0];
	}
	for(int i=1;i<N;i++)
	{
		dp[0][i]=mp[0][i]+dp[0][i-1];
	}
	for(int i=1;i<N;i++)
	{
		for(int j=1;j<N;j++)
		{
			dp[i][j]=max(dp[i-1][j],dp[i][j-1])+mp[i][j];
		}
	}
	cout<<dp[N-1][N-1];
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/m0_71934846/article/details/128456365