#include <iostream>
#include <algorithm>
using namespace std;
const int N=110;
int n ,m;
int w[N][N];
int f[N][N];
int main()
{
int T;
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",&w[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])+w[i][j];
}
}
// printf("%d",&T);
printf("%d\n",f[n][m]);
}
return 0;
}
闫式DP法:状态表示:用集合的方式表示=所有路径数目下的最大值====》集合=所有路径下的数目=====》集合从最后一个点考虑 分为从上到下;从左到右的走路方式+最后一个点数目 》对于里面每个点都是这样的方式=》循环得到最优路径点
考虑的方式一般切入点都是“最后”