动态规划水题。。坑爹的是要注意边界条件。。
#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;
}

本文通过一个具体的编程实例,展示了如何使用动态规划解决特定问题,并强调了正确处理边界条件的重要性。文章提供了完整的代码实现,包括输入输出过程及核心算法部分。
229

被折叠的 条评论
为什么被折叠?



