Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty最多能够摘到多少颗花生。
#include<iostream>
using namespace std;
const int N = 110;
int t,r,c;
int s[N][N],n[N][N];
int f(){
n[0][0] = s[0][0];
for(int i = 1; i < c; i++)
n[0][i] = n[0][i-1] + s[0][i];
for(int i = 1; i < r; i++)
n[i][0] = n[i-1][0] + s[i][0];
for(int i = 1 ; i < r; i++)
for(int j = 1; j < c; j++){
n[i][j] = max(n[i-1][j],n[i][j-1]) + s[i][j];
}
return n[r-1][c-1];
}
int main(){
cin >> t;
for(int i = 0 ; i < t; i++){
cin >> r >> c;
for(int j = 0 ; j < r; j++)
for(int k = 0 ; k < c; k++)
cin >> s[j][k];
cout << f() << endl;
}
return 0;
}