我是渣渣 我是渣渣 。。。。记忆化搜索 看了学长的代码 和算法竞赛入门经典这本书才勉勉强强看懂点。。。
#include <stdio.h>
#include <string.h>
int dir[4][2]={1,0,-1,0,0,1,0,-1};//方向
int dp[101][101],map[101][101];//dp[x][y]保存记忆。。。
int m,n;
int max(int x,int y)
{
return x>y?x:y;
}
bool limit(int x,int y)//是否出界
{
if(x<0||y<0||x==m||y==n)
return false;
return true;
}
int dfs(int x,int y)
{
if(dp[x][y]!=0) return dp[x][y];
for(int i=0;i<4;i++)
{
int x_i=x+dir[i][0];
int y_i=y+dir[i][1];
if(limit(x_i,y_i)&&map[x][y]>map[x_i][y_i]&&dp[x][y]<dfs(x_i,y_i)+1)
dp[x][y]=dp[x_i][y_i]+1;
}
return dp[x][y];
}
int main()
{
while(scanf("%d %d",&m,&n)!=EOF){
memset(map,0,sizeof(map));
memset(dp,0,sizeof(dp));
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
scanf("%d",&map[i][j]);
int num=0;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
num=max(num,dfs(i,j));
}
printf("%d\n",num+1);
}
return 0;
}
poj1088 滑雪 记忆化搜索
原创
©著作权归作者所有:来自51CTO博客作者scx_white的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
POJ1088 滑雪
&n
dfs 枚举 动态规划 深度优先搜索 -
poj 1088 滑雪【记忆化搜索】
#include <math.h>#include <map>#include <string>u
搜索 poj #include i++ ci -
POJ1088 滑雪 dp
题目
poj dp #include 数组 i++ -
POJ 1088 滑雪(动态规划)(记忆化搜索)
滑雪Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑
动态规划DP 记忆化搜索DFS 最长子序列 #include i++ -
poj 1088 记忆化搜索||动态规划
poj 1088 记忆化搜索也也是采用递归深搜的对数据进行搜索,但不同于直接深搜的方式,记忆化搜索是在每
动态规划 记忆化搜索 #include i++ 搜索 -
POJ1088 滑雪题解+HDU 1078(记忆化搜索DP)
DescriptionMichael喜欢滑雪...
#include i++ ios 最小值 #define