AcWing 1015. 摘花生
原题链接
简单
作者:
bigstone
,
2021-04-12 20:31:17
,
所有人可见
,
阅读 240
摘花生 https://www.acwing.com/problem/content/1017/
从网格状左上角起点,只能向下和向右走,走到右下角终点
每个点有对应权值,问走完后,经过点的权值之和最大为多少
动态规划 1)状态表示 1)集合:f[i][j]表示走到(i,j)的所有走法
2)属性:Max
2)状态计算
状态转移方程 f[i][j] = max(f[i][j - 1] + f[i][j], f[i - 1][j] + f[i][j])
#include <iostream>
using namespace std;
const int N = 105;
int t, f[N][N];
int main()
{
scanf("%d", &t);
while ( t -- )
{
int n, m;
scanf("%d%d", &n, &m);
for ( int i = 1; i <= n; i ++ )
for ( int j = 1; j <= m; j ++ )
{
cin >> f[i][j];
f[i][j] = max(f[i - 1][j] + f[i][j], f[i][j - 1] + f[i][j]);
}
printf("%d\n", f[n][m]);
}
return 0;
}