题目描述
现在你面对一个n×m的矩阵,矩阵中的每一个元素都是一个整数,现在你需要计算从矩阵的左上角走到右下角所走过的所有元素相加的最大和。
注意:只能向右或者向下走,不能走出边界。
解答要求 时间限制:1000ms, 内存限制:64MB
输入
输入第一行包含两个用空格分开的整数n (1≤ n ≤ 100)和m (1≤ m ≤ 100),表示n行m列的矩阵;接下来是n行每行包含m个用空格分开的非负的整数A (0 ≤ A ≤ 100)。
输出
输出从矩阵的左上角走到右下角所走过的所有元素相加的最大和。
样例
输入样例 1 复制
2 3 1 2 3 1 0 2
输出样例 1
8
输入样例 2 复制
5 3 14 14 4 76 5 76 78 23 23 45 75 53 52 43 71
输出样例 2
412
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define max(a,b) (a>b? a:b)
int main() {
int i,j;
int n, m;
int get[100][100] = {0};
memset(get,0,sizeof(get));
scanf("%d",&n);
scanf("%d",&m);
for(i=1;i<=n;i++)
for (j = 1; j <= m; j++) {
scanf("%d",&get[i][j]);
}
for (i = 1; i <= n; i++) {
for (j = 1; j <= m; j++) {
//printf("i is %d,j is %d,result is %d\r\n",i,j,get[i][j]);
get[i][j] += max(get[i][j - 1], get[i - 1][j]);
//printf("%d\r\n", get[i][j]);
}
}
printf("%d\r\n",get[n][m]);
}