AcWing 1015. 摘花生
原题链接
简单
作者:
cht
,
2020-07-31 21:51:52
,
所有人可见
,
阅读 779
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int T;
int n, m;
int a[N][N];
int f[N][N];//状态表示:f(i,j)表示从(1,1)到(i,j)最多摘到的花生数量
//集合属性:MAX
int main()
{
scanf("%d", &T);
while(T --)
{
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++)
scanf("%d", &a[i][j]);
//读入
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++)
f[i][j] = max(f[i - 1][j], f[i][j - 1]) + a[i][j];//状态转移方程:从上面的和从左边的转移加上这个地方摘到的花生
printf("%d\n", f[n][m]);//输出
}
return 0;
}
为啥N要取110呀?
+10防止越界