hdu 2571 命运 (记忆化搜索)
来源:互联网 发布:性价比高的鼠标 知乎 编辑:程序博客网 时间:2024/05/16 11:59
题目分析:定义dp[x][y]为从位置(i,j)走所能取得最大幸运值:
dp[x][y]=max(dp[x+1][y], dp[x][y+1],dp[x][y*k])+maze[x][y]...........(x+1<=n y+1<=m y*k<=m)
注意:
1.注意初始化 dp[n][m]=maze[n][m];
//******记忆化搜索#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int minf=-200000000;int maze[25][1100],n,m,dp[25][1000];//dp[x][y]是代表从位置(i,j)走所能得到的最大幸运值int dfs(int x,int y){//int ans=minf; if(dp[x][y]!=minf) return dp[x][y]; int ans=minf; if((y+1<=m)/*&&dfs(x,y+1)>ans*/)//向右 { if(dfs(x,y+1)>ans) ans=dfs(x,y+1); } if((x+1<=n)/*&&dfs(x+1,y)>ans*/)//向下 { if(dfs(x+1,y)>ans) ans=dfs(x+1,y); } for(int k=2;k*y<=m;k++) if(dfs(x,y*k)>ans) ans=dfs(x,y*k); dp[x][y]=ans+maze[x][y]; return dp[x][y];}int main(){int C;scanf("%d",&C);while(C--){scanf("%d %d",&n,&m);memset(dp,0,sizeof(dp));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%d",&maze[i][j]); dp[i][j]=minf;}dp[n][m]=maze[n][m];dfs(1,1);int ans=dp[1][1]; /* for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)printf("%d ",dp[i][j]);printf("\n");}*/printf("%d\n",ans);}system("pause");return 0;}
- hdu 2571 命运 (记忆化搜索)
- hdu 2571 命运 (记忆化搜索+dp)
- 【记忆化搜索】HDU
- hdu 1242Rescue(记忆化搜索)
- hdu 1088 滑雪(记忆化搜索)
- hdu 1508 Alphacode(记忆化搜索)
- hdu 1579(记忆化搜索)
- hdu 1978(记忆化搜索)
- hdu 1208(记忆化搜索)
- HDU 1142(djstar+记忆化搜索)
- hdu 1078 (dp记忆化搜索)
- HDU 1978(记忆化搜索)
- hdu 1078(记忆化搜索)
- HDU-1428(记忆化搜索)
- hdu 1069(记忆化搜索/LIS)
- HDU 1181(记忆化搜索)
- hdu 1078(记忆化搜索)
- 命运(HDU-2571)
- 深度优先搜索应用_深度优先生成树&&割点判断
- 3D经验技巧
- 列表下拉/上拉刷新:(二)支持下拉/上拉的ViewController基类
- Python 中文
- Linux笔记 find和grep命令
- hdu 2571 命运 (记忆化搜索)
- Wince上添加Windows Media Player(ceplayer)的感触
- C# Winform获取bin目录的路径
- myeclipse svn 更改密码
- 将时间转换为am pm
- java.util.concurrent概述
- Oracle与MySQL的几点区别
- 出现"scriptmanager同时存在于xxx和xxx中“的解决方案
- 如何修改默认的FTP帐号或密码