ac代码如下
#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
int a[N][N],f[N][N];
int main(){
int n,ans=-1;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
cin>>a[i][j];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
//f[i][j]表示小标为(i,j)的数所能规划出的最大值
// f[i][j]只能由左边和上边的值得到
f[i][j] = a[i][j] + max(f[i-1][j], f[i][j-1]);
}
}
//因为都是正整数 所以每一行最后一列就是最大值
//行数越大规划出的最大值越大
//最后一行最后一列的数则为最大金币数
cout<<f[n][n];
return 0;
}