#include <iostream>
#include <cstring>
using namespace std;
int dp();
int a[55][55];
int d[110][55][55];
int m;
int n;
int main()
{
int T;
cin >> T;
while(T--)
{
cin >> m >> n;
for(int i = 1; i <= m; i++)
for(int j = 1; j <= n; j++)
cin >> a[i][j];
memset(d, 0, sizeof(d));
cout << dp() << endl;
}
}
int dp()
{
for(int k = 3; k < m+n; k++)
{
for(int i = 1; i < m; i++)
{
if(k - i <= 1 || k - i > n)
continue;
for(int j = 2; j <= m; j++)
{
if(k - j < 1 || k - j >= n)
continue;
if(i == j)
continue;
d[k][i][j] = max(max(d[k-1][i][j], d[k-1][i][j-1]), max(d[k-1][i-1][j], d[k-1][i-1][j-1]));
d[k][i][j] = d[k][i][j] + a[i][k-i] + a[j][k-j];
}
}
d[m+n][m][m] = d[m+n-1][m-1][m];
}
return d[m+n][m][m];
}
南陽理工OJ_題目61 傳紙條(一)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.