HDU 2571 命运
这题很DP就是跟前面一样一步一步来,先找到一部分,然后把这部分扩大,最后至全部,最终找出全局最优解,这里要注意,他给的测试数据太淫荡了,其实|K|>100,所以max初始化时给个1111吧
#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 );
memset( num,0,sizeof( num ) );
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 )
{
int max = -1111;
if( i == n&& j == m )
max = 0;
if( i < n )
if( num[i+1][j] > max )
max = num[i+1][j];
if( j < m )
if( num[i][j+1] > max )
max = num[i][j+1];
int c = j + j;
while( c <= m )
{
if( num[i][c] > max )
max = num[i][c];
c += j;//这里不要写错了,我把这里写错了,结果一直wa
}
num[i][j] += max;
// printf( "%d %d = %d\n",i,j,num[i][j] );
}
printf( "%d\n",num[1][1] );
}
return 0;
}
本人还是新手 ,转载请注明来自Lvsi‘s home
浙公网安备 33010602011771号