此题为动态规划加搜索型题目

采用记忆化搜索的方式

dp[i][j]表示从坐标为 i,j 开始滑所能达到的最长距离

则dp[i][j]=max(dp[i-1][j],dp[i][j+1],dp[i+1][j],dp[i][j-1])

代码如下:

#include<stdio.h>
int dir[4][2]= {{0,1},{1,0},{-1,0},{0,-1}};    //初始化偏移量
int dp[105][105];           //dp[x][y]表示从坐标x,y开始滑所达到的最大长度
int map[105][105];
int n,m;
int dfs(int x,int y)
{if(dp[x][y])           //若已经搜过,返回return dp[x][y];int tx,ty,i;for(i=0; i<4; i++)     //搜索x,y的上,下,左,右
    {tx=x+dir[i][0];ty=y+dir[i][1];if(tx>= 0 && tx<n && ty>=0 && ty<m && map[tx][ty]<map[x][y]) //未出界且能往tx,ty滑
        {int temp=dfs(tx,ty);  //从tx,ty开始滑if(temp>=dp[x][y])    //若比从x,y开始滑的距离长或相等
            {dp[x][y]=temp+1;}}}return dp[x][y];
}
int main()
{int i,j,t;while(scanf("%d%d",&n,&m)!=EOF){for(i=0; i<n; i++)for(j=0; j<m; j++){scanf("%d",&map[i][j]);dp[i][j]=0;}int max=-1;for(i=0; i<n; i++)           //将所有地方遍历一遍,找出最大长度for(j=0; j<m; j++){t=dfs(i,j);if(t>max)max=t;}//printf("%d\n",dp[0][0]);  测试数据dp[0][0]为最低地方printf("%d\n",max+1);     //最低的地方dp值为0,所以最后加1
    }return 0;
}

View Code

转载于:https://www.cnblogs.com/Houheshuai/p/3696401.html

Poj-1088-滑雪相关推荐

  1. POJ 1088 滑雪(输出对比)

    http://poj.org/problem?id=1088 滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 68159 ...

  2. poj 1088 滑雪(线性DP)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 81553   Accepted: 30437 Description ...

  3. poj 1088 滑雪 详解

    http://poj.org/problem?id=1088 这是一道dp入门题,不过我一直没想明白应该怎么dp.今天,在做自己学校oj的算法基础题时看到这题,标注着dp的分类,加上我一直都比较喜欢做 ...

  4. 动态规划 POJ 1088 滑雪

    Description Michael 喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知 ...

  5. POJ 1088 滑雪 (动规)

    滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 75664 Accepted: 28044 Description Mich ...

  6. POJ - 1088 滑雪 【DP】【DFS】

    Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  7. poj 1088 滑雪 (dp)

    题目链接 题意就不多解释了,题目思路很简单,搜索就行了,但是暴搜会TLE,但是对于每一个dfs(X, Y),如果参数一样的话结果也是一样的,我们用一个二维数组去保存每次计算的位置的结果,最后从所有的解 ...

  8. poj 1088滑雪

    经典的动态规划问题: 1 #include<iostream> 2 3 using namespace std; 4 5 int b[101][101]; 6 int d[101][101 ...

  9. I - 滑雪 POJ - 1088(深搜,记忆化搜索)

    Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底滑坡. ...

  10. POJ 1088(滑雪)

    题目链接 题意 给一个R.C数字矩阵,每个点可以向上下左右且比自己小的方向移动,问最长移动距离 AC dfs + 记忆 #include <iostream> #include <a ...

最新文章

  1. CMD 一条命令 执行 多条命令
  2. leetcode算法第9题
  3. flowable工作流 流程变量_Activiti工作流的应用示例
  4. 接入 SDK 结果翻车了?了解 SDK 的那些事
  5. ik分词和jieba分词哪个好_Pubseg:一种单双字串的BiLSTM中文分词工具
  6. 交互式内核图 -***
  7. 【报告分享】抖音蓝V账号定位及外化罗盘.pdf(附下载链接)
  8. java上传文件-大文件以二进制保存到数据库
  9. C++多态虚函数demo
  10. mysql 8.0 (ga)_MySQL 8.0.20 GA 发布
  11. winform直接控制云台_手持云台(稳定器)推荐,2020年双十一热销手机/相机手持云台(稳定器)推荐...
  12. 使用MarkDown,编写html格式的项目帮助手册(含左侧目录树)
  13. MySQL 第六章过程式数据库对象.1存储对象
  14. (转)Notepad++删除空白行
  15. MSDOS(MBR)和GPT磁盘分区表
  16. EZchip(Tilera) SDN和NFV解决方案
  17. Pytorch显存分配机制与显存占用分析方法
  18. 踩坑系列《十一》完美解决阿里云vod视频点播无法播放音频和视频点播控制台里的媒资库里面的视频无法播放
  19. 分享五个绝对称得上妖艳古怪精灵的前端代码效果
  20. VSCode 代码换行快捷键设置为Shift + Enter

热门文章

  1. SAP事务码MM17物料主数据批量维护
  2. van Emda Boas
  3. Linux-C-Program:makefile
  4. WritePrivateProfileString、GetPrivateProfileString 读写配置文件
  5. 《编写高质量Python代码的59个有效方法》——第10条:尽量用enumerate取代range
  6. PPT | Docker定义存储-让应用无痛运行
  7. Javascript对于不同浏览器的兼容性
  8. Cent6.5 64位yum安装mysql5.5
  9. 跨链原子互换时代来临,BCH潜力无限!
  10. 携程2019校招编程题(3)