输入
第1行:N,N为矩阵的大小。(2 <= N <= 500)
第2 - N + 1行:每行N个数,中间用空格隔开,对应格子中奖励的价值。(1 <= N[i] <= 10000)
输出
输出能够获得的最大价值。
输入示例
3
1 3 3
2 1 3
2 2 1
输出示例
11
代码实现
#include<stdio.h>
int A[501][501];
int f[501][501];
int maxi(int a,int b)
{
return a>=b?a:b;
}
int main(){
int N,i,j;
scanf("%d",&N);//矩形取数问题 51nod
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
scanf("%d",&A[i][j]);
f[1][1]=A[1][1];
for(i=1;i<=N;i++){
for(j=1;j<=N;j++){
f[i][j]=maxi(f[i][j-1]+A[i][j],f[i-1][j]+A[i][j]);
}
}
printf("%d\n",f[N][N]);
return 0;
}