[ACM] poj 1088 滑雪 (内存搜索DFS)
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 73409 | Accepted: 27141 |
Description
但是为了获得速度,滑的区域必须向下倾斜,并且当你滑到坡底。你不得不再次走上坡或者等待升降机来载你。
Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每一个数字代表点的高度。以下是一个样例
1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
一个人能够从某个点滑向上下左右相邻四个点之中的一个,当且仅当高度减小。在上面的样例中。一条可滑行的滑坡为24-17-16-1。
当然25-24-23-...-3-2-1更长。其实。这是最长的一条。
Input
Output
Sample Input
5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
Sample Output
25
Source
解题思路:
记忆化搜索比普通的搜索效率要高。已经搜索过的就不用再搜索了,有DP的思想.step[i][j] 保存的是当前坐标i,j能够到达的最大距离(不包含自己),比方3 2 1,当前是3,那么能够到达的最大距离为2,对于每一个坐标,能够上下左右四个方向搜索,取距离最大的那个,作为该坐标的step[][]。
记忆化搜索这里体现的就是当搜索到某一个坐标时,该坐标的step[][]已经有值(搜索过了),且肯定是最优的,那么直接返回该step[][]值就能够了。
代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int maxn=110;
int mp[maxn][maxn];
int step[maxn][maxn];
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
int n,m; bool judge(int x,int y)
{
if(x>=1&&x<=n&&y>=1&&y<=m)
return true;
return false;
} int dfs(int x,int y)//当前位置所能到达的最大距离
{
if(step[x][y])//搜索过的就不用再又一次搜索,直接返回其值
return step[x][y];
for(int i=0;i<4;i++)
{
int nextx=x+dx[i];
int nexty=y+dy[i];
if(judge(nextx,nexty)&&mp[nextx][nexty]<mp[x][y])
{
int temp=dfs(nextx,nexty)+1;
if(temp>step[x][y])//四个方向取最大值
step[x][y]=temp;
}
}
return step[x][y];
} int main()
{
scanf("%d%d",&n,&m);
memset(step,0,sizeof(step));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&mp[i][j]);
int ans=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
step[i][j]=dfs(i,j);
if(ans<step[i][j])
ans=step[i][j];
}
printf("%d",ans+1);//注意+1,由于本身也是序列里的一员(第一个)
return 0;
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
[ACM] poj 1088 滑雪 (内存搜索DFS)的更多相关文章
- poj 1088 滑雪 DP(dfs的记忆化搜索)
题目地址:http://poj.org/problem?id=1088 题目大意:给你一个m*n的矩阵 如果其中一个点高于另一个点 那么就可以从高点向下滑 直到没有可以下滑的时候 就得到一条下滑路径 ...
- POJ 1088 滑雪(记忆化搜索+dp)
POJ 1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 107319 Accepted: 40893 De ...
- POJ 1088 滑雪(记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 92384 Accepted: 34948 Description ...
- POJ 1088 滑雪 【记忆化搜索经典】
题目链接:http://poj.org/problem?id=1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...
- POJ 1088 滑雪 DFS 记忆化搜索
http://poj.org/problem?id=1088 校运会放假继续来水一发^ ^ 不过又要各种复习,功课拉下了许多 QAQ. 还有呀,就是昨天被一个学姐教育了一番,太感谢了,嘻嘻^ ^ 好了 ...
- POJ 1088 滑雪 (记忆化搜索)
题目链接:http://poj.org/problem?id=1088 题意很好懂,就是让你求一个最长下降路线的长度. dp[i][j]记录的是i j这个位置的最优的长度,然后转移方程是dp[i][j ...
- poj 1088 滑雪(区间dp+记忆化搜索)
题目链接:http://poj.org/problem?id=1088 思路分析: 1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度: 2>状态转移方程 ...
- POJ 1088 滑雪(模板题 DFS+记忆化)
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- POJ 1088 滑雪【记忆化搜索】
题意:给出一个二维矩阵,要求从其中的一点出发,并且当前点的值总是比下一点的值大,求最长路径 记忆化搜索,首先将d数组初始化为0,该点能够到达的路径长度保存在d数组中,同时把因为路径是非负的,所以如果已 ...
随机推荐
- wpa/wpa2破解系统(CDlinux)U盘启动傻瓜教程
CDlinux是破解无线wifi信号的很好用的系统.它就像一个PE,不过它是基于Linux内核的微型系统.里面的破解工具很齐全,既有传统的抓包工具,也有最新的PIN码破解软件,而且针对windows用 ...
- 异常Exception in thread "AWT-EventQueue-XX" java.lang.StackOverflowError
今天太背了,bug不断,检查到最后都会发现自己脑残了,粗心写错,更悲剧的是写错的时候还不提示错. 刚才有遇到一个问题,抛了这个异常Exception in thread "AWT-Event ...
- 每天进步一点点——再次了解Linux进程ID
转载请注明出处:http://blog.csdn.net/cywosp/article/details/38968011 1. 概述 众所周知,进程(process)是一个可运行程序的实例,可是在Li ...
- 请注意CSDN社区微通道,许多其他的精彩等着你
CSDN社区微信公众号"程序人生"(微信ID:coder_life)来了,每天我们会将CSDN社区中大量的优质内容浓缩成1~3篇文章.推送到您的手机中,让您不管何时何地都能感受到知 ...
- google在线测试练习2
Problem Given a list of space separated words, reverse the order of the words. Each line of text con ...
- 《Java程序猿面试笔试宝典》之Java与C/C++有什么异同
Java与C++都是面向对象语言,都使用了面向对象思想(比如封装.继承.多态等),因为面向对象有很多非常好的特性(继承.组合等),使得二者都有非常好的可重用性. 须要注意的是,二者并不是全然一样,以下 ...
- maven配置文件里改动默认jre
方法一:打开%maven_home%\conf\setting.xml,仅仅会在新建项目时自己主动使用1.6的导入项目不会 在<profiles>标签内加入�例如以下配置: <pro ...
- [LeetCode169]Majority Element求一个数组中出现次数大于n/2的数
题目: Given an array of size n, find the majority element. The majority element is the element that ap ...
- Apple Watch 1.0 开发介绍 1.3 简介 WatchKit App 架构
WatchKit app和WatchKit extension一起实现了app的界面.当用户在Apple Watch中操作时,WatchKit app从storyboards中选择合适的场景.比如,如 ...
- 关于WCF的引用,添加服务和添加web服务的区别
原文:关于WCF的引用,添加服务和添加web服务的区别 本章内容主要是根据我做的实验来阐述这2种添加服务针对WCF的不同之处,我们按照示例一步一步来看. 如下是工程的结构: 该WCF服务是通过控制台程 ...