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喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度 ...
 
随机推荐
- 【Selenium-WebDriver实战篇】ScreenRecorder的实际输出路径,自己的解决方案
			
==================================================================================================== ...
 - C++定义和初始化数组以及memset的使用(转)
			
一.一维数组 静态 int array[100]; 定义了数组array,并未对数组进行初始化 静态 int array[100] = {1,2}: 定义并初始化了数组array 动态 int* ar ...
 - Mixed Far-Field and Near-Field Source Localization Based on Subarray Cross-Cumulant
			
基于子阵列互累积量(Cross-Cumulant)的远场和近场混合声源定位[1]. 文中采用Uniform linear array (ULA)阵列,将其分为两个互相重叠的子阵列,构建关于子阵列输出信 ...
 - HTML5 文件读取
			
一.定义 input的file类型会渲染为一个按钮和一段文字.点击按钮可打开文件选择窗口,文字表示对文件的描述(大部分情况下为文件名):file类型的input会有files属性,保存着文件的相关信息 ...
 - 【JZOJ6206】【20190610】二分图边染色
			
题目  对一个二分图的边染色,满足有相同端点的边的颜色一定不同;  设最优染色为\(C\) ,你的染色为\(X\),只需要满足$ X \le 2^ {\lceil log C \rceil }$ ...
 - web安全总结
			
一.XSS 首先说下最常见的 XSS 漏洞,XSS (Cross Site Script),跨站脚本攻击,因为缩写和 CSS (Cascading Style Sheets) 重叠,所以只能叫 XSS ...
 - pycharm2018.2.1破解、汉化
			
##我只是一个搬运工 -_- (一)先破解,破解教程直接给个网址吧,感谢各位大神的无私奉献:https://blog.csdn.net/u014044812/article/details/78 ...
 - 【00NOIP普及组】税收与补贴问题(信息学奥赛一本通 1911)( 洛谷 1023)
			
[题目描述] 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给 定的最高价位后,销量以某固定 ...
 - POI报表打印
			
一.Excel报表(POI) 1.需求说明 在企业级应用开发中,Excel报表是一种最常见的报表需求.Excel报表开发一般分为两种形式: 1.为了方便操作,基于Excel的报表批量上传数据 2.通过 ...
 - (二)Cisco dhcp snooping配置解释
			
#配置dhcp snooping相关命令 Switch(config)#ip dhcp snooping //打开DHCP Snooping功能Switch(config)#ip dhcp snoo ...