动态规划水题。。坑爹的是要注意边界条件。。
#include<stdio.h>
#include<string.h>
int n,num[25][1024],m;
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",&num[i][j] );
for( int i = n; i; --i )
for( int j = m; j; --j )
{if(i==n&&j==m) continue;
int max=-11111;
if(i<n)
if(max<num[i+1][j]) max=num[i+1][j];
if(j<m)
if(max<num[i][j+1]) max=num[i][j+1];
int c=2*j;
while(c<=m)
{
if(num[i][c]>max) max=num[i][c];
c+=j;
}
num[i][j]+=max;
}
printf( "%d\n",num[1][1] );
} return 0;
}