北大poj-1088
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 88484 | Accepted: 33177 |
Description
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
Output
Sample Input
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
Sample Output
25 分析:看到这个题感觉好简单,直接递归就写好了,提交居然TLE了。那么就需要一些小技巧了,先干掉动态分配二维数组,然后定义一个二维数组gawDis[]用来记录对应节点的最长路径,后面再用到这个节点的时候就不需要再计算了。
综上:递归+记忆化dfs搜索
#include <stdio.h>
#include <stdlib.h> #define MAXNUM 101 int gawMap[MAXNUM][MAXNUM];
int gawRow;
int gawColumn;
int gawDis[MAXNUM][MAXNUM]; int max(int a, int b)
{
if(a>b)
return a;
else
return b;
} int Ski(int wlasthigh, int *awlastposition)
{
int awposition[] = {};
int wleft = ;
int wright = ;
int wup = ;
int wdown = ; if(gawDis[awlastposition[]][awlastposition[]] != )
{
return gawDis[awlastposition[]][awlastposition[]];
}
if(awlastposition[] > )
{
awposition[] = awlastposition[]-;
awposition[] = awlastposition[];
if(wlasthigh > gawMap[awposition[]][awposition[]])
{
wleft = Ski(gawMap[awposition[]][awposition[]], awposition) + ;
}
}
if(awlastposition[] < gawColumn-)
{
awposition[] = awlastposition[]+;
awposition[] = awlastposition[];
if(wlasthigh > gawMap[awposition[]][awposition[]])
{
wright = Ski(gawMap[awposition[]][awposition[]], awposition) + ;
}
}
if(awlastposition[] > )
{
awposition[] = awlastposition[]-;
awposition[] = awlastposition[];
if(wlasthigh > gawMap[awposition[]][awposition[]])
{
wup = Ski(gawMap[awposition[]][awposition[]], awposition) + ;
}
}
if(awlastposition[] < gawRow-)
{
awposition[] = awlastposition[]+;
awposition[] = awlastposition[];
if(wlasthigh > gawMap[awposition[]][awposition[]])
{
wdown = Ski(gawMap[awposition[]][awposition[]], awposition) + ;
}
}
wleft = max(wleft, wright);
wup = max(wup, wdown);
return gawDis[awlastposition[]][awlastposition[]] = max(wleft, wup);
} int main(void)
{
int i = ;
int j = ;
scanf("%d %d", &gawRow, &gawColumn); for(i=; i<gawRow; i++)
{
for(j=; j<gawColumn; j++)
{
scanf("%d", &gawMap[i][j]);
}
} int awposition[] = {};
for(i=; i<gawRow; i++)
{
for(j=; j<gawColumn; j++)
{
awposition[] = j;
awposition[] = i;
Ski(gawMap[awposition[]][awposition[]], awposition);
}
} int wLen = ;
for(i=; i<gawRow; i++)
{
for(j=; j<gawColumn; j++)
{
if(wLen < gawDis[i][j]) wLen = gawDis[i][j];
}
}
printf("%d\n", wLen); return ;
}
北大poj-1088的更多相关文章
- 北大POJ题库使用指南
原文地址:北大POJ题库使用指南 北大ACM题分类主流算法: 1.搜索 //回溯 2.DP(动态规划)//记忆化搜索 3.贪心 4.图论 //最短路径.最小生成树.网络流 5.数论 //组合数学(排列 ...
- POJ 1088 滑雪(记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 92384 Accepted: 34948 Description ...
- 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 一道中文题,这道题如果不限时的话,是个简单的搜索,但限时的话,就要用记忆化搜索 所谓记忆化搜索就是对每一次搜索的结果进行记录,然后之后的如 ...
- POJ 1088 滑雪 (记忆化搜索)
题目链接:http://poj.org/problem?id=1088 题意很好懂,就是让你求一个最长下降路线的长度. dp[i][j]记录的是i j这个位置的最优的长度,然后转移方程是dp[i][j ...
- POJ 1088 滑雪 -- 动态规划
题目地址:http://poj.org/problem?id=1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...
- OpenJudge/Poj 1088 滑雪
1.链接地址: bailian.openjudge.cn/practice/1088 http://poj.org/problem?id=1088 2.题目: 总Time Limit: 1000ms ...
- poj 1088 滑雪(区间dp+记忆化搜索)
题目链接:http://poj.org/problem?id=1088 思路分析: 1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度: 2>状态转移方程 ...
- poj 1088 (dfs+记忆化) 滑雪
题目;http://poj.org/problem?id=1088 感觉对深搜还不太熟练,所以练习一下,类似于连连看的那题,注意的是所求的是最大达长度,并不是从最大的或者最小的点出发得到的就是最长的路 ...
- POJ 1088 滑雪 【记忆化搜索经典】
题目链接:http://poj.org/problem?id=1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...
随机推荐
- 20160308001 GridView的Sorting排序
参考地址: http://www.cnblogs.com/yinluhui0229/archive/2011/08/01/2124169.html 功能介绍:单击gridview的某一列列头,可以对该 ...
- anaconda win10安装报错:UnicodeDecodeError解决方法
Traceback (most recent call last): File , in <module> import conda.cli File , in <module> ...
- 四大开源协议比较:BSD、Apache、GPL、LGPL (转)
转自:http://www.lupaworld.com/portal.php?mod=view&aid=205552&page=all 本文参考文献:http://www.fsf.or ...
- 参考:(Java Selenium)Element is not visible to clcik
1.The element is not visible to click. Use Actions or JavascriptExecutor for making it to click. By ...
- IE7下总提示" 缺少标识符、字符串或数字"
用Jquery easyUI ,IE7下列表显示不了,总提示缺少标识符.字符串或数字.而google,maxthon,firefox,IE10等却没有问题. 原因是Json末尾多了个逗号.IE7下js ...
- ios设备相关
设备方向 typedef NS_OPTIONS(NSUInteger, UIInterfaceOrientationMask) { UIInterfaceOrientationMaskPortrait ...
- Linux基础※※※※如何使用Git in Linux(二)
参考资料: 1. http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 2. Git-简 ...
- SPI总线(同步)
一.SPI总线简介 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口.SPI 用 于CPU与各种外围器件进行全双工. ...
- Git实现从本地添加项目到远程仓库
Git是现在最流行的版本控制系统之一了,今天也试试了,成功了上传了远程仓库,接下来看看我是怎么做的. (ps:七牛抓取不到图片,请移步:http://blog.csdn.net/u011043843/ ...
- Action<>和Func<> 委托【代理】
C#中的Action<>和Func<> 其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的 ...