博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1088 滑雪
阅读量:4582 次
发布时间:2019-06-09

本文共 1172 字,大约阅读时间需要 3 分钟。

Description

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

输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。

Output

输出最长区域的长度。

Sample Input

5 51 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9

Sample Output

25 设f[i][j]为从(i,j)滑下的最长路径 由于f[i][j]从四个方向转移而来,所以可写出

F[i][j] = max {f[i  - 1][j] + 1    (a[i - 1][j] <a[i][j])

               {f[i + 1][j] + 1    (a[i + 1][j] <a[i][j])
               {f[i][j - 1] + 1     (a[i][j - 1] <a[i][j])
               {f[i][j + 1] + 1    (a[i][j + 1] <a[i][j])
    (初值):f[i][j] = 0

 

 

#include 
using namespace std;typedef unsigned long long ull;typedef long long ll;int a[102][102],n,m;int f[102][102];int dp(int x,int y){ if(f[x][y]) return f[x][y]; f[x][y]=1; if(a[x-1][y]
1) f[x][y]=max(f[x][y],dp(x-1,y)+1); if(a[x+1][y]
1) f[x][y]=max(f[x][y],dp(x,y-1)+1); if(a[x][y+1]

 

 

 

转载于:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/9313674.html

你可能感兴趣的文章
python之建完model之后操作admin
查看>>
Java 类加载机制 ClassLoader Class.forName 内存管理 垃圾回收GC
查看>>
shell 脚本后台运行知识
查看>>
php设置cookie,在js中如何获取
查看>>
实验三+099+吴丹丹
查看>>
[bzoj3036]绿豆蛙的归宿
查看>>
[洛谷P5057][CQOI2006]简单题
查看>>
多线程同步的几种方法
查看>>
数据结构-冒泡排序
查看>>
关于程序状态字寄存器PSW(Program Status Word)与多核多线程
查看>>
mybatis的缓存
查看>>
java 缓冲流 Buffer
查看>>
7月23号=》261页-265页
查看>>
软考知识点梳理--综合布线
查看>>
Mysql5.6主从热备配置
查看>>
VS2010DebugView捕捉
查看>>
mfix中更改time dependent VTK filename的最大时间步数的容量
查看>>
Windows7安装 docker-compose的过程
查看>>
关于nodeJS多线程的支持,目前看来无法实现,讲解v8的一些东西
查看>>
php递归创建文件夹的两种方法
查看>>