[openjudge-动态规划]滑雪
题目描述
描述
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更长。事实上,这是最长的一条。
输入
输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。
输出
输出最长区域的长度。
样例输入
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
来源
Don’t know
思路
直接仿照摘花生这道题是不行的,因为有四个方向而另外一题只有两个方向因此要使用新的方法,即是将坐标与数字储存在结构体中排序然后判断这个连续数列的最长上升子序列即可。用的方法是将二维转化一维,将会简单许多。
注:本题坑点很多,特别是数组初始化的大小。
代码实现
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct skit
{
int x,y,num;
}re[10005];
bool cmp(skit a,skit b)
{
if(a.num<b.num)return true;
return false;
}
int n,m,a[105][105],maxx,p,b[105][105];
int main()
{
memset(a,-999,sizeof(a));
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
scanf("%d",&a[i][j]);
re[++p].x=i;
re[p].y=j;
re[p].num=a[i][j];
}
sort(re+1,re+p+1,cmp);
for(int i=1;i<=p;i++)
{
int nx=re[i].x,ny=re[i].y;
if(a[nx][ny]>a[nx-1][ny])b[nx][ny]=max(b[nx][ny],b[nx-1][ny]+1);
if(a[nx][ny]>a[nx+1][ny])b[nx][ny]=max(b[nx][ny],b[nx+1][ny]+1);
if(a[nx][ny]>a[nx][ny-1])b[nx][ny]=max(b[nx][ny],b[nx][ny-1]+1);
if(a[nx][ny]>a[nx][ny+1])b[nx][ny]=max(b[nx][ny],b[nx][ny+1]+1);
maxx=max(maxx,b[nx][ny]);
}
printf("%d\n",maxx+1);
}
[openjudge-动态规划]滑雪的更多相关文章
- OpenJudge 1088 滑雪
总时间限制: 1000ms 内存限制: 65536kB 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者 ...
- OpenJudge/Poj 1088 滑雪
1.链接地址: bailian.openjudge.cn/practice/1088 http://poj.org/problem?id=1088 2.题目: 总Time Limit: 1000ms ...
- POJ1088滑雪(记忆化搜索+DFS||经典的动态规划)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 84297 Accepted: 31558 Description M ...
- POJ 1088 滑雪 -- 动态规划
题目地址:http://poj.org/problem?id=1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...
- POJ 1088 滑雪 ( DFS+动态规划思想 )
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 79519 Accepted: 29581 Description ...
- POJ-1088滑雪,典型的动态规划题,与NYOJ-10skiing一样,但NYOJ上时限是3s,用搜索可以过,但在POJ上就超时了~~
滑雪 Time Limit: 1000MS Memory Limit: 65536k ...
- 滑雪---poj1088(动态规划+记忆化搜索)
题目链接:http://poj.org/problem?id=1088 有两种方法 一是按数值大小进行排序,然后按从小到大进行dp即可: #include <iostream> #incl ...
- 【动态规划】skiing_深度搜索_动态规划
问题 B: [动态规划]skiing 时间限制: 1 Sec 内存限制: 128 MB提交: 28 解决: 11[提交][状态][讨论版] 题目描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪 ...
- 滑雪 分类: POJ 2015-07-23 19:48 9人阅读 评论(0) 收藏
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 83276 Accepted: 31159 Description Mich ...
- POJ 1088 滑雪 记忆化DP
滑雪 Time Limit: 1000MS Memory Limit: 65536K Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度 ...
随机推荐
- Android打开各种类型的文件方法总结
很简单,通过调用系统的intent,我们可以打开各种文件,不熟悉的朋友可以了解下action.datatype.uri的相关知识. 通用方法如下: public static Intent openF ...
- 将RAC软件转换为单实例软件
将RAC软件转换为单实例软件 http://blog.itpub.net/26736162/viewspace-2155632/ 1. Stop database and CRS on both no ...
- varchar2长度的意义
参考:http://www.cnblogs.com/vipcjob/archive/2010/06/08/1754075.html http://www.itpub.net/thread-732714 ...
- FastJSON 设置默认参数,全局配置方式 和 一些使用方式、坑
如果要被序列化的对象含有一个date属性或者多个date属性按照相同的格式序列化日期的话,那我们可以使用下面的语句实现: 在应用的的Main方法体里配置全局参数: JSONObject.DEFFAUL ...
- 理解面向过程(OPP)、面向对象(OOP)、面向切面(AOP)
概念 面向过程编程OPP:Procedure Oriented Programming,是一种以事物为中心的编程思想.主要关注“怎么做”,即完成任务的具体细节. 面向对象编程OOP:Object Or ...
- php操作redis案例
<?php //实例化 $redis = new Redis(); //连接服务器 //默认端口是6379,可不写 $redis->connect( ...
- cf 1110 D
哇真难啊,没注意到 可以开 dp[N][3][3]这种性质,也就是三个相同的顺子可以变成三个刻子,所以我们维护顺子的数目就不用超过三了,又因为每张牌i,只会被i-1,i-2,影响,所以额外开两维记录( ...
- Strassen 矩阵相乘算法(转)
偶尔在算法课本上面看到矩阵相乘的算法,联想到自己曾经在蓝桥杯系统上曾经做过一道矩阵相乘的题目,当时用的是普通的矩阵相乘的方法,效率极低,勉强通过编译.所以决定研究一下Strassen矩阵相乘算法,由于 ...
- 谷歌浏览器(Chrome)禁止浏览器缓存 设置
在开发项目期间用谷歌浏览器调试,他总是缓存我的css样式这个很气人啊,后经过摸索找到了方法,如下 先F12或者shift+ctrl+j 打开调试者工具,在找Network这个tab按钮,点击进入,勾选 ...
- python全栈开发 * 30知识点汇总 * 180713
30 re模块2一.正则表达式在线测试 在线测试工具 http://tool.chinaz.com/regex/(一).*?的用法: . 是任意字符 * 是取 0 至 无限长度 ? 是非贪婪模式.合在 ...