dp的题目,dp[i][j]=max(dp[i-1][j],dp[i][j-1],dp[i][j);
#include<iostream>
#include<cstring>
#include<cstdio>
#define INF -1000000
using namespace std;
int dp[25][1005];
int main()
{
// freopen("in.txt","r",stdin);
int c,n,m,i,j,k;
cin>>c;
while(c--)
{
cin>>n>>m;
for(i=0;i<=n;i++) dp[i][0]=INF;
for(i=0;i<=m;i++) dp[0][i]=INF;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cin>>dp[i][j];
}
dp[0][1]=dp[1][0]=0;
int temp;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
temp=max(dp[i-1][j],dp[i][j-1]); //将前一个与上面一个比较得到最大的值
for(k=1;k<j;k++) //将这点前面能到这点的值进行比较得到最大值
{
if(j%k==0)
{
temp=max(temp,dp[i][k]);
// cout<<temp<<' ';
}
}
dp[i][j]+=temp; //将这点的值加上最大值,得到这点的最大值
}
}
/* for(i=0;i<=n;i++){
for(j=0;j<=m;j++)
cout<<dp[i][j]<<' ';
cout<<endl;
}
*/
cout<<dp[n][m]<<endl;
}
return 0;
}