POJ数字滑雪问题

C++深搜应用---滑雪 比如给出的起点为(3,2),那么一条可滑行的滑坡为24-17-16-1;当然, 24-23-...-3-2-1更长。输出一行,包含若干对整数,每对整数的第1个数表示滑坡点的行坐标,第2个数表示滑坡点的列坐标,每一对整数之间用'-->'连接,表示滑雪区域中最长滑坡的坐标。现给出一个由二维数组表示的滑雪区域,数组的数字代表各点的高度。滑雪是一项非常刺激的运动,为了获得速度,滑雪的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。现在,我们的问题是:找到最长的一条滑坡并输出滑坡的路径。 阅读详情

数字滑雪问题实际上是递归(动态规划)的典型问题,和走迷宫或者网络爬虫搜索策略类似。将二维数组转化为一个树的遍历算法(广度优先或者深度优先,也称作队列优先或者堆栈优先)。下面是源码,代码的核心在于此时状态到下一状态需要利用状态转移方程来获取。而问题难点在于如何利用规则设计出状态方程。然后利用递归求解(因为每个结点的遍历方式都一样)


<span style="font-size:14px;">#include <stdio.h>

#define MAX 100
int skiMap[MAX][MAX]; //地图存储
int skiLength[MAX][MAX];//滑行最长距离存储
int direction[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};    //四个方向的坐标变化

 //判断当前要访问节点(x,y)是否在地图内
bool isInSkiMap(int x, int y, int N)
{
    if (x >= 0 && x < N
        && y >= 0 && y < N)
    {
        return true;
    }
    else
    {
        return false;
    }
}


int DepthFirstSearch(int x, int y, int N)
{
    if (skiLength[x][y] > 1)
    {
        return skiLength[x][y];//要是该点已经处理过了,取值不是初值,直接返回该点的值即可
    }

    int maxLen = 1;

    //对四个可能能滑行的方向分别搜索
    for (int i = 0; i < 4; i++)
    {
        int nextX = x + direction[i][0];
        int nextY = y + direction[i][1];
        if (isInSkiMap(nextX, nextY, N) //该点在地图内,该点值比上一点的值小
            && skiMap[nextX][nextY] < skiMap[x][y])
        {
            //上一点的最大滑行距离=max{四个方向相邻点的最大滑行距离}+1
            skiLength[x][y] = DepthFirstSearch(nextX, nextY, N) + 1;
            if (skiLength[x][y] > maxLen)
            {
                maxLen = skiLength[x][y];
            }
        }
    }

     skiLength[x][y] = maxLen;//记录最大值,便于下次使用

     return maxLen;
}

int ski(const int *arr, int N)
{
    if ( arr == NULL || N <= 0)
    {
        return -1;
    }

    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
    {
        skiLength[i][j] = 1;//所有点的滑行最长长度初始化为1,只有自身
        skiMap[i][j] = arr[N * i + j];
    }

    int longest = DepthFirstSearch(0, 0, N); //从skimap[0][0]开始搜索

    return (longest > 1)? longest:1;
}


int main(void)
{
    int a[] = {24,23,22,21,20,13,14,17,18,19,12,15,16,1,0,11,8,7,4,3,10,9,6,5,2};

    printf("%d\n", ski(a, 5));

    return 0;
}</span>




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 阅读详情

相关推荐

保姆级教程:SAP ABAPer如何为VF01销售发票和MIRO发票校验配置凭证替代(含AC_DOCUMENT BADI完整代码示例)

本文详细解析了SAP ABAP中通过AC_DOCUMENT BADI实现VF01销售发票和MIRO发票校验的凭证替代技术。从技术选型到BADI实施步骤,再到核心逻辑代码示例,为ABAP开发者提供了一套完整的解决方案,帮助应对财务部门复杂的业务需求。

weixin_30421809的博客 351

c++滑雪(记忆化搜索)

现在给定你一个二维矩阵表示滑雪场各区域的高度,请你找出在该滑雪场中能够完成的最长滑雪轨迹,并输出其长度(可经过最大区域数)。在给定矩阵中,最长的滑行轨迹为 25−24−23−…当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。接下来 R 行,每行包含 C 个整数,表示完整的二维矩阵。给定一个 R 行 C 列的矩阵,表示一个矩形网格滑雪场。在给定矩阵中,一条可行的滑行轨迹为 24−17−2−1。

2301_76180325的博客 658

ABP框架实战:从零搭建多租户应用(含完整代码示例)

本文详细介绍了如何使用ABP框架从零构建多租户SaaS应用,涵盖多租户架构设计、数据隔离实现、租户管理及性能优化等核心内容。通过完整的代码示例,帮助开发者快速掌握企业级数据隔离系统的开发技巧,提升SaaS应用开发效率。

weixin_29247219的博客 263

【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

九筒的博客 1089

共封装光学(CPO):下一代互联革命

Nvidia:产品:Quantum-X Q3450(115.2T,144×800G,2025H2上市)、Spectrum 6800(409.6T,512×800G,2026H2上市);技术路线:TSMC COUPE封装、MRM调制器、光栅耦合、外部激光源(Lumentum/Ayar Labs供应);战略定位:以横向扩展CPO验证供应链,最终聚焦纵向扩展场景(Feynman架构)。

存储随笔 4965

手把手教你用Wireshark国密版分析TLCP和IPSec协议(附下载地址)

本文详细介绍了Wireshark国密版在TLCP和IPSec协议分析中的实战应用,包括环境配置、协议解析、合规性检查及高级分析技巧。该工具针对商用密码算法(如SM2/SM3/SM4)进行了专项优化,支持GB/T 38636-2020 TLCP和GB/T 36968-2018 IPSec VPN等国家标准,帮助开发者与安全工程师高效完成密评分析任务。

weixin_29325955的博客 553

DP练习题:POJ--滑雪(从未见过的遍历顺序)

题目描述 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 ...

AAS48的博客 790

【电机控制入门】——电机控制书籍推荐

电机控制入门书籍推荐及分享 阅读须知: 1.电机控制的入门是涉及到机械、电子与控制等复杂交叉学习,它需要持续投入时间才可以看到学习的效果,如同“一万小时定律”。俗话说,九层之台,起于垒土,因此电机控制入门没有所谓的速成培训班。相反,还需要夯实好一定的基础。为此,博主建议从基础理论抓起,故推荐相关的书籍并分享给大家。 2.学习电机贵在动手实践,无论是借助于MATLAB/Simulink仿真平台来验证理论分析,或是使用板子对所设计的控制系统进行物理实现,博主极力推荐在一定基础(看完部分以下推荐的书籍),一边动手

昔时扬尘处 3万+

POJ 1088滑雪(3种解法)

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

Harington的博客 9979

C++经典面试题100例及答案

答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。答:这样可以提高编译效率,因为分开的话只需要编译一次生成对应的.obj文件后,再次应用该类的地方,这个类就不会被再次编译,从而大大的提高了编译效率。答:这种函数会自动为内联函数,这种函数在函数调用的地方在编译阶段都会进行代码替换。答:常对象是指在任何场合都不能对其成员的值进行修改的对象。答:所谓的回调函数,就是预先在系统的对函数进行注册,让系统知道这个函数的存在,以后,当某个事件发生时,再调用这个函数对事件进行响应。

usstmiracle的博客 3万+

9、傅里叶变换:连续时间与离散时间信号分析的核心工具

本文深入探讨了傅里叶变换在连续时间和离散时间信号分析中的核心作用,详细介绍了连续时间傅里叶变换(CTFT)和离散时间傅里叶变换(DTFT)的定义、性质及其应用。文章涵盖了傅里叶级数到傅里叶变换的推导过程、常见变换对、系统分析中的关键性质,并讨论了采样后频谱的周期延拓与混叠问题。此外,还展示了傅里叶变换在滤波器设计、通信系统调制解调等实际场景中的应用,最后展望了其在图像处理、生物医学等领域的广阔前景。

jump7的博客 67

poj 滑雪

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

midsummer的专栏 563

24、交通信号协调算法与模型解析

本文深入解析了交通信号协调中的关键算法与模型,包括多路径进展模型、MAXBAND网络系统模型和松弛启用带模型。这些模型通过合理安排相位序列、优化绿波带宽等方式,提高了交通运行的效率。文章还探讨了交通控制从单点控制向网络协调的发展趋势,分析了当前面临的挑战与机遇,并提出了未来研究方向,如借助信息技术和机器学习,深入研究交通网络的基本构成,以实现智能化和精准化的信号协调。

agile9scrum的博客 134

POJ 1088 滑雪 题解

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

h_18_messi的博客 503

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

poj 1088 滑雪

提交地址:http://poj.org/problem?id=1088 滑雪 Time Limit:1000MS Memory Limit:65536K Total Submissions:89171 Accepted:33477 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可...

dengqiao2441的博客 156

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

POJ 1088:滑雪

题目描述:(此题目是2012北大信科夏令营上机考试题目) 总时间限制: 1000ms 内存限制: 65536kB 描述Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是

SmarterYu的专栏 885

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

POJ 1088 滑雪 (深搜)

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

David_Jett 1340

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

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

Link_Ray的博客 976

POJ 滑雪

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

shamohua的专栏 4562

POJ 1088 滑雪

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

不屈不挠的拉普 243

POJ 【1088】 滑雪

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

qq_43813140的博客 275

【 POJ 1088】 滑雪 动态规划

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

天才小熊猫的博客 420

POJ 1088 滑雪 (记忆化搜索 DFS) java

POJ 滑雪 题目链接 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 文章大意: 给定一个N行M列的数字矩阵,问其中最长的下降路径。 ...

a736225348的博客 1023

POJ1088 滑雪 简单DP

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

Lxp的博客 436

POJ 1088 滑雪(dp)

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

xuejye的博客 310

每日一题(1)——滑雪问题(动态规划)

问题ID:POJ1088 滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 62082   Accepted: 22678 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当

小熊不去实验室 5619
上一篇: 几个经典算法研究
下一篇: 二维指针的使用场景
CodingGeek
博客等级 码龄18年 15粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值