poj1088 滑雪
来源:互联网 发布:双拼cn域名价格 编辑:程序博客网 时间:2024/05/22 03:37
Description
Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。
1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 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
思路:递推,用一个结构体储存每个点的坐标,高度,然后按高度由小到大排序.最后遍历每一点,如果这个点比周围的点高,而且步数小于或等于周围某个点的步数,则把这个点的步数加一.
#include <cstring>#include <cstdio>#include <algorithm>using namespace std;struct Node{ int x; int y; int h;};struct Node a[10001];int steps[101][101],he[101][101];bool compare(struct Node n1,struct Node n2){ return n1.h<n2.h;}int main(){ memset(he,0,sizeof(he)); int r,c,i,j,n=0,Max=0; scanf("%d %d",&r,&c); for(i=0;i<r;i++) for(j=0;j<c;j++){ a[n].x=i; a[n].y=j; steps[i][j]=1; scanf("%d",&a[n].h); he[i][j]=a[n].h; n++; } sort(a,a+n,compare); for(i=0;i<n;i++){ if(he[a[i].x+1][a[i].y]>he[a[i].x][a[i].y]&&steps[a[i].x][a[i].y]>=steps[a[i].x+1][a[i].y]) steps[a[i].x+1][a[i].y]=steps[a[i].x][a[i].y]+1; if(he[a[i].x-1][a[i].y]>he[a[i].x][a[i].y]&&steps[a[i].x][a[i].y]>=steps[a[i].x-1][a[i].y]) steps[a[i].x-1][a[i].y]=steps[a[i].x][a[i].y]+1; if(he[a[i].x][a[i].y+1]>he[a[i].x][a[i].y]&&steps[a[i].x][a[i].y]>=steps[a[i].x][a[i].y+1]) steps[a[i].x][a[i].y+1]=steps[a[i].x][a[i].y]+1; if(he[a[i].x][a[i].y-1]>he[a[i].x][a[i].y]&&steps[a[i].x][a[i].y]>=steps[a[i].x][a[i].y-1]) steps[a[i].x][a[i].y-1]=steps[a[i].x][a[i].y]+1; } for(i=0;i<r;i++) for(j=0;j<c;j++) if(steps[i][j]>Max) Max=steps[i][j]; printf("%d\n",Max); return 0;}
0 0
- POJ1088 滑雪
- POJ1088 滑雪
- poj1088滑雪
- POJ1088 滑雪
- POJ1088 滑雪
- poj1088滑雪
- POJ1088 滑雪
- POJ1088滑雪
- POJ1088滑雪
- POJ1088滑雪
- poj1088 滑雪
- POJ1088--滑雪
- POJ1088-滑雪
- POJ1088 滑雪
- POJ1088 滑雪
- poj1088滑雪
- poj1088滑雪
- POJ1088滑雪
- xcode6中添加pch全局引用文件
- RunLoop 原理和核心机制
- Word2010中插入多级列表编号的三种方法
- swift简单学习之getter setter方法
- 【游戏客户端开发】Unity3D 学习笔记2——了解U3D引擎的操作面板和各种工具
- poj1088 滑雪
- The best resources for learning exploit development
- Android图片海报制作-MVP的使用
- Android 属性动画特效
- 【游戏客户端开发】Unity3D 学习笔记3——Unity3D资源目录及资源读取
- kali linux 2.0 无法安装vmware tools
- 学习笔记
- expdp/impdp区别
- lqb