OpenJudge 1088 滑雪
总时间限制: 1000ms 内存限制: 65536kB
描述
Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。
输入
输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。输出输出最长区域的长度。
样例输入
样例输出
解题思路
采用“人人为我”式,从低到高计算,每个点的maxPath是其上下左右比它低的点的最大maxPath+1。
如何实现排序,将各点存储在一个新数组中进行排序,复习了排序函数的使用。
由于不熟悉sort函数,参考了别人的代码,算是一个教训,多练练这道题。
AC代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std; int map[][];//存储高度
int maxPath[][];
int dir[][] = { {,},{,},{-,},{,-} }; struct Node
{
int x;
int y;
int h;
bool operator <(const Node &f)const
{
return h < f.h;
}
}n[]; int main() {
int r, c;
int cnt = ;//n[]中的角标
int ans = ;
cin >> r >> c;
for (int i = ; i <= r; i++)//第零行和第零列空出来,统一了边角情况
{
for (int j = ; j <= c; j++)
{
cin >> map[i][j];
maxPath[i][j] = ;//初始化为1
n[cnt].x = i;
n[cnt].y = j;
n[cnt].h = map[i][j];//读入结点数据,为排序做准备
cnt++;
}
}
sort(n, n + cnt);
for (int i = ; i < cnt; i++)//从低到高遍历所有点
{
int x = n[i].x;
int y = n[i].y;
for (int j = ; j < ; j++)//上下左右四个方向
{
int xx = x + dir[j][];
int yy = y + dir[j][];
if (xx >= && xx <= r && yy >= && yy <= c && map[x][y] > map[xx][yy])//每经过一个点(x,y) ,更新自己
{
maxPath[x][y] = max(maxPath[x][y], maxPath[xx][yy] + );
ans = max(ans, maxPath[x][y]);
}
}
}
cout << ans << endl;
//system("pause");
return ;
}
OpenJudge 1088 滑雪的更多相关文章
- POJ 1088 滑雪(记忆化搜索+dp)
POJ 1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 107319 Accepted: 40893 De ...
- POJ 1088 滑雪 【记忆化搜索经典】
题目链接:http://poj.org/problem?id=1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...
- OpenJudge/Poj 1088 滑雪
1.链接地址: bailian.openjudge.cn/practice/1088 http://poj.org/problem?id=1088 2.题目: 总Time Limit: 1000ms ...
- POJ 1088 滑雪(记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 92384 Accepted: 34948 Description ...
- POJ 1088 滑雪 -- 动态规划
题目地址:http://poj.org/problem?id=1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...
- poj 1088 滑雪(区间dp+记忆化搜索)
题目链接:http://poj.org/problem?id=1088 思路分析: 1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度: 2>状态转移方程 ...
- POJ - 1088 滑雪 dp
http://bailian.openjudge.cn/practice/1088?lang=en_US 题解: 设一个dp[N][N]数组代表从(i,j)坐标开始能滑到的最远距离.更新的方法为 遍历 ...
- POJ 1088滑雪
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 89168 Accepted: 33474 Description ...
- POJ 1088 滑雪 记忆化DP
滑雪 Time Limit: 1000MS Memory Limit: 65536K Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度 ...
随机推荐
- K-means:如何选择K(cluster的数目)
目前决定cluster数目的常用方法是手动地决定cluster的数目 哪个K是正确的? 上图中的数据集,我们可以说它有4个clusters,也可以说它有2个clusters,但哪个是正确答案呢?其实这 ...
- 使用docker 实现MySQL主从同步/读写分离
1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...
- CSS3背景图片(多重背景、起始位置、裁剪、尺寸)
一.多重背景图片 ①CSS3允许我们在一个元素上添加多个图片 ②多重背景可以把多个图片资源添加到background属性上,用逗号隔开,然后用background-position把他们定位到你想要的 ...
- video.js学习笔记
video.js学习笔记获取用户观看时长
- Day17:web前端开发面试题
1.JavaScript 数据类型有哪些? JavaScript 变量能够保存多种数据类型:数值.字符串值.数组.对象等等: var length = 7; // 数字 var lastName = ...
- QML学习(四)——<Text显示>
文本显示是界面开发必不可少的内容,在Qt Quick模块中提供了 Text 项目来进行文本的显示,其中可以使用 font 属性组对文本字体进行设置.这一篇我们来看看它们的具体使用. 使用字体 就像前面 ...
- OpenFOAM——平行平板间具有相对运动(库埃特流)
本算例翻译整理自:http://the-foam-house5.webnode.es/products/chapter-1-plane-parallel-plates-case/ 这个算例研究了一个距 ...
- springMvc 入门二
目的:请求参数接受,输出,常见的注解(在上一篇入门1基础上) 1:请求参数的绑定 1.1绑定的机制 表单中请求参数都是基于key=value的. SpringMVC绑定请求参数的过程是通过把表单提交请 ...
- Healthcare in Azure
- 搭建阿里云服务 FTP 折中方案
该配置的服务都配置了,端口也都打开了 ,但是ftp 就是连接不上 就是打不开目录 8uftp 出现以下情况 配置文件逐条检查,端口逐个检查 都没有问题,还是出现这种情况,实在没辙,蛋疼...... ...