POJ1088滑雪(入门级DP)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

尽管是比较简单的DP,但是很经典,记忆化搜索加DP,找出状态转移方程很容易写出来。


写出后成就感满满啊~虽然不是纯原创......以前看过别人的思路


不多说帖代码!

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更长。事实上,这是最长的一条。
Input

输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。
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


#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int points[100][100];
int maxlen[100][100]={0};
int row,col;
int i,j;

int dp(int i,int j)
{
	int Max=0;
	if(maxlen[i][j]>0)return maxlen[i][j];
	//检查这个点是否被处理过,若是则f[i][j]>0直接返回,记忆化搜索

	//向上
	if(j>0&&points[i][j]>points[i][j-1]&&Max<dp(i,j-1))
		Max=dp(i,j-1);

	//if中的意思分别是判断:是否越界,高度比较,是否最优

	if(j<col-1&&points[i][j]>points[i][j+1]&&Max<dp(i,j+1))
		Max=dp(i,j+1);
	if(i>0&&points[i][j]>points[i-1][j]&&Max<dp(i-1,j))
		Max=dp(i-1,j);
	if(i<row-1&&points[i][j]>points[i+1][j]&&Max<dp(i+1,j))
		Max=dp(i+1,j);

	maxlen[i][j]=Max+1;
	return maxlen[i][j];
}
int main()
{
    int Max=0;
	scanf("%d%d",&row,&col);
	for(i=0;i<row;i++)
		for(j=0;j<col;j++)
			scanf("%d",&points[i][j]);
	for(i=0;i<row;i++)
		for(j=0;j<col;j++)
			dp(i,j);
	for(i=0;i<row;i++)
		for(j=0;j<col;j++)
			{if(Max<maxlen[i][j])
				Max=maxlen[i][j];}
			printf("%d\n",Max);
			return 0;
}
</span>



动态规划入门(二)DP 基本思想 具体实现 经典题目 POJ1088 POJ1163 POJ1050 动态规划入门(二)DP 基本思想 具体实现 经典题目 POJ1088 POJ1163 POJ1050 () POJ1088,动态规划的入门级题目。嘿嘿,连题目描述都是难得一见的中文。 题目分析: 求最长的滑雪路径,关键是确定起点,即从哪开始滑。 不妨设以( i, j )为起点, 阅读详情

相关推荐

POJ DP 百练1088 滑雪问题

Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子  1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 1

liuyanfeier的专栏 1833

dp打开思路3:HDU1069 POJ3616 POJ1088

HDU 1069 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 题意:把给定的长方体(不限)叠加在一起,叠加的条件是,上面一个长方体的长和宽都比下面长方体的长 和宽短;求这些长方体能叠加的最高的高度.(其中(3,2,1)可以摆放成(3,1,2)、(2,1,3)等). 思路:其实就是求最长的单调递减序列。在长和宽的递减下,求最大能得出...

少说,多做。 5288

poj(1088)——滑雪(经典递推型动归)

题意: 中文题,就是在所有的点中找一个点作为起点,然后叫你找出从起点开始的最长路径是多少。 这里高度必须严格递减。 思路: 一开始我碰到这题时,没有思路,是看题解写的。 但是今天我回头再去看时,发现自己能够独立写出来了,而且和上次的方法不一样。也许这就是进步吧! 其实就是一个递推型动归,如果理解了上一题,那么这题也好做了。 这是第一次写的: #include #include #i

ACM_hades的梦想之路 1354

POJ 1088 滑雪dp

题目链接:http://poj.org/problem?id=1088点击打开链接 滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 100627   Accepted: 38300 Description Michael喜欢滑雪百这并不奇

xuejye的博客 307

POJ 1088 滑雪【经典DP

经典DP,dp[x][y]表示从(x,y)为起点的最长滑雪距离.

AC_Dreameng 1234

POJ 1088 滑雪

POJ 1088 滑雪 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 ...

不屈不挠的拉普 240

POJ 1088 滑雪【贪心解DP

链接: http://poj.org/problem?id=1088 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28508#problem/E 滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissio

free斩 2323

POJ 1088 滑雪 && HDU 1078 FatMouse and Cheese (坐标DP两题对比)

POJ 1088 滑雪 HDU 1078 FatMouse and Cheese 两题题意大致相同,做法也相同,差别在于最后输出,到底是直接输出dp[1][1](我使用 1,1 点作为起点),还是在dp数组中选择最大值。我因为没考虑清这个问题,两题分别用了另一题的输出方式。。。。 首先在做滑雪的时候,因为测试样例能够遍历全图,所以我直接在最后输出了dp[1][1],然后提交一直WA,后来

JasonWu的博客 272

滑雪 poj 1088 (动态规划)

滑雪 poj 1088 (动态规划) Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 ...

菜菜的博客 642

POJ1088 滑雪 简单DP

POJ1088 滑雪Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 5 16 17 18 19 6

Lxp的博客 429

POJ - 1088 滑雪DP】【DFS】

Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23...

一定要站在自己热爱的生活里闪闪发光 3万+

POJ 1088滑雪 动态规划

滑雪 Time Limit:1000MS Memory Limit:65536K Total Submissions:109909 Accepted:41848 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Mic...

天才小熊猫的博客 419

POJ1088】【动态规划】滑雪问题 思路解析和代码

滑雪问题 题目链接 POJ不能解析#include<bits/stdc++.h> 个人思路 题意 input: 3 3 4 5 6 3 10 7 2 9 8 output:9 此题的最长的滑坡指的是滑坡的个数,每个格子代表一个滑坡,即从10开始出发,最长可以经过9个格子 错误思路1:一开始以为的是滑坡长度(数值)之和最大,此时输出为54 错误思路2:后来以为的是滑坡的出发点,此时输出为10 思路 整个思路可以类比最长下降子序列,与最长下降子序列相比,这个是二维的,且边界值并非dp[0][0]或d

九筒的博客 1087

POJ1088滑雪问题 简单dp(动态规划)已AC

滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 99422   Accepted: 37756 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等

Link_Ray的博客 972

Poj 1088 滑雪 (简单DP + 记忆化搜索

题目链接:http://poj.org/problem?id=1088 滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 92402   Accepted: 34953 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪

far away 362

POJ 1088 滑雪 DP + dfs

题目来源:http://poj.org/problem?id=1088 题意:汉语题意,不说了 思路:这道题的动态方程是比较容易想的。就是说拿当前点的高度和该点四周的高度相比,若比周围点高度高,则比较长度。dp[i][j] = max(dp[i][j],dp[newx][newy]+1),这样即可。在比较的时候用到了深搜找路径。本来想到了用深搜,担心超时,一直不敢写。深搜时有一个地方要注意,就

1574

POJ 1088 -- 滑雪】 结构体排序 + 最优策略选取(DP

POJ 1088滑雪】 结构体排序 + 最优策略选取(dp) VJ题目传送门 题目描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 5 16 ...

TTTiko's blog 308

poj 1088 滑雪(区间dp+记忆化搜索

题目链接:http://poj.org/problem?id=1088 思路分析: 1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度; 2>状态转移方程:由于由位置[i, j]只能向四个方向移动,所以子问题最多有四个;所以dp[i][j]为其邻域可以滑雪的最大区域长度加上从该位置滑到邻域的长度,即1; 代码如下: ...

aqjh9999的博客 133
上一篇: The Triangle(简单DP)
下一篇: Intersection (计算几何)
stingning_
博客等级 码龄11年 2粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值