杭电2571 命运
2013-01-19 17:02
274 查看
杭电2571 命运
http://acm.hdu.edu.cn/showproblem.php?pid=2571/*
题意:从(1,1)点到(n,m)点,求最大命运值
解法:
DP问题,dp[i][j]表示(i,j)的最大命运值,从(1,1)到(n,m)一直算下去,dp
[m]即为所求
状态转移方程 dp[i][j]=MAX(dp[i][j/k],dp[i-1][j],dp[i][j-1])+value[i][j]
*/
#include<stdio.h>
#include<math.h>
int map[25][1005];
int dp[25][10005];
int getMax(int a,int b)
{
return a>b?a:b;
}
int main()
{
int C,n,m,i,j;
scanf("%d",&C);
while(C--)
{
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
scanf("%d",&map[i][j]);
dp[1][1]=map[1][1];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(i==1&&j==1)
continue;
int max=-99999999;
for(int p=2;p<=j;p++)
if(j%p==0)
max=getMax(max,dp[i][j/p]);
if(j>1)
max=getMax(max,dp[i][j-1]);
if(i>1)
max=getMax(max,dp[i-1][j]);
dp[i][j]=max+map[i][j];
}
/* for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
printf("%d ",dp[i][j]);
if(j==m)
printf("\n");
}
*/
printf("%d\n",dp
[m]);
}
return 0;
}
相关文章推荐
- 杭电(hdu)2571 命运
- 杭电2571 命运
- 杭电2571-命运 动态规划
- 杭电2571-命运
- 杭电2571 命运
- 杭电2391 Filthy Rich &&杭电 2571 命运(动规)
- 命运 HDU - 2571
- HDU-2571 命运
- hdu 2571 - 命运
- HDU 2571 命运 DP 动态规划
- HDU 2571 命运
- hdu 2571 命运 简单DP
- HDU 2571 命运 (简单DP)
- HDU 2571 命运
- hdu 2571 命运 DP
- HDU 2571 命运 DP .
- HDU(2571)——命运(简单dp)
- 命运(HDU-2571)
- 动态规划H - 命运 HDU - 2571
- 【伪dfs】HDU 2571——命运