谷爱凌nb!
这题太简单了,直接粘贴代码了
/*
有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。
你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。
请问如何走才能拿到最多的金币
3
1 3 3
2 2 2
3 1 2
11
*/
#include<iostream>
using namespace std;
const int N=1005;
int map[N][N];
int dp[N][N];
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>map[i][j];
//初始化
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
dp[i][j]=map[i][j];
//dp过程
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
dp[i][j]=max(dp[i][j],max(dp[i-1][j]+map[i][j],dp[i][j-1]+map[i][j]));
cout<<dp[n][n]<<endl;
return 0;
}