hdu2571动态规划

125ms.... 太慢了。。。dp[i][j] = max(dp[i][j-1],dp[i-1][j],dp[i][k],1<k<j&&j%k==0);

#include <iostream>
#include <cstring> using namespace std; #define MAXN 21
#define MAXM 1005
#define INF -123456789 int n,m;
int C; int map[MAXN][MAXM];
int dp[MAXN][MAXM]; void DP()
{
memset(dp,INF,sizeof(dp));
dp[1][0] = dp[0][1] = 0;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
int ans = max(dp[i-1][j],dp[i][j-1]);
for(int k = 1; k < j; k++)
{
if(j % k == 0)
{
ans = max(ans,dp[i][k]);
}
}
dp[i][j] = ans + map[i][j];
}
}
} int main()
{
cin>>C;
while(C--)
{
memset(map,0,sizeof(map));
cin>>n>>m;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
cin>>map[i][j];
}
}
DP();
cout<<dp[n][m]<<endl;
}
return 0;
}
上一篇:JAVA字符串格式化-String.format()的使用


下一篇:Java 新特性(7) - Java EE 7 新特性