博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
滑雪 记忆化搜索简单模型
阅读量:7016 次
发布时间:2019-06-28

本文共 1548 字,大约阅读时间需要 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

一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然,25-24-23-...-3-2-1更长。事实上,这是最长的一条滑坡。

【输入文件】

输入文件ski.in的第一行为两个数R, C,表示滑雪区域的行数和列数(1≤R,C≤100)。下面是R行,每行有C个整数,表示高度H(0≤H≤10000)。

【输出文件】

1 #include
2 #include
3 #include
4 using namespace std; 5 int m,n; 6 int map[1000][1000]; 7 int book[1000][1000]; 8 int nextx[4]={
1,-1,0,0}; 9 int nexty[4]={
0,0,1,-1};10 int ans=-1;11 void ins(){12 scanf("%d%d",&n,&m);13 for(int i=1;i<=n;i++){14 for(int j=1;j<=m;j++){15 scanf("%d",&map[i][j]);16 }17 }18 }19 int dfs(int x,int y){20 if(book[x][y]!=0){21 return book[x][y];22 }23 for(int i=0;i<=3;i++){24 int tx=x+nextx[i];25 int ty=y+nexty[i];26 if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&map[x][y]>map[tx][ty]){27 book[x][y]=max(book[x][y],dfs(tx,ty)+1);28 }29 }30 return book[x][y];31 }32 int main(){33 freopen("ski.in","r",stdin);34 freopen("ski.out","w",stdout);35 ins();36 for(int i=1;i<=n;i++){37 for(int j=1;j<=m;j++){38 ans=max(ans,dfs(i,j)+1);39 }40 }41 cout<

 

输出文件ski.out包括一行,只包含一个整数,表示滑雪区域中最长滑坡的长度。

【样例输入】

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

【样例输出】

25

 

转载于:https://www.cnblogs.com/1129-tangqiyuan/p/8488159.html

你可能感兴趣的文章
Entity Framework简介
查看>>
图片轮播小列子
查看>>
趣文分享:有人将Android开发环境比作女人
查看>>
ASP.NET MVC 使用TryUpdateModel 更新的技巧
查看>>
构建最小根文件系统
查看>>
用法规则记录
查看>>
ESXi安装实录
查看>>
Leetcode: Roman to Integer
查看>>
Tomcat 配置加密的服务器连接器
查看>>
jQuery 学习笔记1 弹出一个对话框
查看>>
GCD介绍(二): 多核心的性能
查看>>
Openfire开发配置,Openfire源代码配置,OpenFire二次开发配置
查看>>
转 CentOS开启FTP及配置用户
查看>>
前端文摘:Web 开发模式演变历史和趋势
查看>>
win7的优化-1:隐藏我的电脑导航栏里的收藏等项目
查看>>
Consequence of Point-by-Point Bounds
查看>>
c# 封装的7zip压缩 (全源码,不含任何类库)
查看>>
三、OPENERP 中的对象关系类型
查看>>
PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
查看>>
流行时尚!21例创新的侧边栏菜单网页设计作品
查看>>