滑雪 ————记忆化搜索

记忆化搜索——AcWing 901. 滑雪 记忆化搜索是一种结合了搜索和动态规划思想的方法。它通过将已经计算过的结果存储起来,在后续遇到相同情况时直接返回存储的结果,避免重复计算。 阅读详情

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<bits/stdc++.h>
using namespace std;
const int MAXN=107;
int a[MAXN][MAXN];
int dp[MAXN][MAXN];
int d[4][2]={0,1, 0,-1, 1,0, -1,0};
int R,C;
int max_;
bool check(int x,int  y)
{
    if(x>=0&&x<R&&y>=0&&y<C)
        return true;
    else
        return false;
}


int dfs(int x,int y)
{
    if(dp[x][y])    return dp[x][y];
    int ans=0;
    for(int i=0;i<4;i++)
    {
        int nx=x+d[i][0];
        int ny=y+d[i][1];
        if(check(nx,ny)&&a[nx][ny]!=-1&&a[nx][ny]<a[x][y])
            dp[x][y]=max(dp[x][y],dfs(nx,ny)+1);
    }
    return dp[x][y];
}




int main()
{
    while(~scanf("%d %d",&R,&C))
    {
        memset(a,-1,sizeof(a));//初始化各个点高度,默认-1,表示不存在
        for(int i=0;i<R;i++)
            for(int j=0;j<C;j++)
                cin>>a[i][j];//输入各点的高度
        memset(dp,0,sizeof(dp));
        max_=0;
        for(int i=0;i<R;i++)
            for(int j=0;j<C;j++)
                max_=max(max_,dfs(i,j));//找出最大值
        cout<<max_+1<<endl;//+1.  因为最后一个点没被算进去。
    }
    return  0;
}


滑雪问题(记忆化搜索) 注:由于本题有多种不同版本,这里统一用XXX和YYY代替不同的专有名词 【问题描述】 XXX喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待YYY来载你。XXX想知道载一个区域中最长的滑坡。 区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子: 顺治可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-…-3-2-1更长。事实上. 阅读详情

相关推荐

OPC与AI智能体集成实战:一人公司的技术栈构建与避坑指南

1. 先搞清楚“一人公司”和“AI工具”到底在解决什么问题 最近看到不少关于“裸辞搞OPC一人公司”和“AI时代骗局”的讨论,结合搜索热词里高频出现的 openclaw 、 AI编程 、 OPC ,我觉得有必要把这里面的水搅一搅,说点实在的。 首先得拆开看。标题里混了三个东西: 一人公司 、 OPC/OpenClaw 、 AI培训 。它们被放在一起讨论“骗局”,但本质上解决的是不同层面的问题。 一人公司 ,或者说个人工作室、独立开发者模式,核心是 用最小化团队(甚至一个人)去承接项目、开发产品或提供服务 。

weixin_29038345的博客 320

林大oj滑雪

滑雪 Problem:A Time Limit:1000ms Memory Limit:65536K Description 每到冬天,信息学院的张健老师总爱到二龙山去滑雪,喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来

猿的进化 894

全球AI算力最强公司分析报告

全球AI算力最强公司分析报告显示,Google凭借自研TPU技术和庞大数据中心网络位居榜首,拥有约100万至150万块等效H100 GPU算力。微软、Meta和亚马逊紧随其后,分别拥有75万、55万和25万块等效H100 GPU。中国企业中,百度、阿里巴巴和腾讯表现突出,华为在国产AI芯片领域领先。技术指标上,NVIDIA H100相比A100性能显著提升,但功耗也大幅增加。未来AI算力需求将持续激增,预计2028年全球市场将超2000亿美元。新兴挑战者如xAI可能改变竞争格局。

MyySophia的博客 5714

记忆化搜索—— 滑雪[洛谷]

了解暴力搜索的缺陷以及记忆化搜索的用途和具体实现。

Turing_Sheep的博客 1028

海康视觉平台VisionMaster通讯实战:三种触发方式深度解析

本文深度解析海康视觉平台VisionMaster的三种通讯触发方式:字符串触发、接收字符串事件触发和轮询D地址触发。通过实际案例和配置技巧,帮助工程师在工业场景中实现高效、稳定的设备通讯,提升视觉系统的集成效率和可靠性。

weixin_42665255的博客 282

【低空经济】多源异构数据融合的低空智能感知系统设计与实现

本文探讨了低空智能感知系统在多源异构数据融合中的设计与实现,重点解决无人机等低空飞行器的安全监测问题。通过雷达、光学和红外传感器的数据融合,系统识别准确率提升至92%,并实现120ms的低延迟处理。文章详细介绍了时空对齐、特征级融合和动态权重自适应等关键技术,为低空经济发展提供可靠技术支持。

weixin_29065659的博客 342

[记忆化搜索] 滑雪(模板题+记忆化搜索)

文章目录0. 前言1. 记忆化搜索模板题 0. 前言 动态规划问题可以使用记忆化搜索 + 递归来求解。也是 dfs 优化的方式,两者本无区别。 1. 记忆化搜索模板题 901. 滑雪 重点: 记忆化搜索、递归实现 dp 思路: 状态定义: f[i][j]:所有从 (i, j) 开始滑的路径的最大值 状态转移: 分类依据:滑的方向就是上下左右四个方向,当下一个位置的高度低于当前高度的是个更新状态即可 显然,计算 f[i][j] 时,需要提前计算得到前一个转移过来的状态,然后再这样一直往前找,是

Y-puyu 的博客 1031

三种 绘制奈奎斯特曲线 的方法

如何绘制Nyquist曲线 提供三种绘制方法,其中使用最广泛的是概略图绘制方法 ①解析法绘制 ②概略图法绘制 ③MATLAB绘制

weixin_46664967的博客 6万+

【记忆化搜索】滑雪

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

Jiangzh_MZOI 714

锂电池主动均衡理解

锂电池主动均衡方案总结: 来自:http://wenku.baidu.com/link?url=EWiyACZ3aLPhcOjI4FZL3uQ9d0FD6dBhADQSVQiaSmRHHATTdSig1Wy39JY7-ijCzbAEYG1ymz6Lv5zhGdZaStQSHzFt6v3h3_tMrJudz9O 目前车厂采用被动均衡方案的公司:(来自网页) 目前采用主动均衡的...

weixin_34365417的博客 2910

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

1727

滑雪题解-记忆化搜索,DP

滑雪DescriptionSample Input解题思路搜索(DFS)剪枝记忆化讨论动态规划解法(DP)总结 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8

zhy_Learn的博客 428

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【记忆化搜索】| AcWing 901. 滑雪

901. 滑雪 题目描述 给定一个R行C列的矩阵,表示一个矩形网格滑雪场。 矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。 一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。 当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。 下面给出一个矩阵作为例子: 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 在给定矩阵中,一条可行的

HangHug_L的博客 556

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

滑雪(记忆化搜索)

滑雪前言题目讲解题意数据范围思路代码思考与收获迭代dp的思路DAG思考 前言 滑雪这道题是记忆化搜索的一道典型例题,通过这道例题的学习,可以初探记忆化搜索的使用场景以及使用方法。 题目讲解 题意 给定一个n∗mn*mn∗m矩阵,从任意点开始向上、下、左、右四个方向走,并且只能向数值降低的方向走,求最长行走距离。 数据范围 1≤n,m≤3001 \leq n,m \leq 3001≤n,m≤300 1≤wi,j≤100001 \leq w_{i,j} \leq 100001≤wi,j​≤10000 思路 可以

心升明月的博客 573

滑雪——记忆化搜索(C++)

AcWing 901. 滑雪 给定一个R行C列的矩阵,表示一个矩形网格滑雪场。 矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。 一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。 当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。 下面给出一个矩阵作为例子: 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 在给定矩阵中

Annabel_CM的博客 1059

动态规划-滑雪(记忆化搜索)

动态规划-滑雪题目题解1.暴力搜索(dfs)2.记忆化搜索代码1.暴力搜索(dfs)2.记忆化搜索 题目 题解 1.暴力搜索(dfs) 可以通过枚举每个点,将每个点作为dfs的起始点,去搜索一条最长的路径,限制条件就是严格单调下降。注意:对于此题做dfs搜索的时候,是不用标记访问的点数的,因为,限制条件是严格单调下降,每一个点只能被访问一次,不会出现环路的状态 ,并且需要遍历所有的路径,找到最大的长度。 2.记忆化搜索 在暴力搜索中,需要枚举每一个点,且以每一个点作为起点进行搜索,仔细想一想递归的过程就知

weixin_44775484的博客 460

滑雪(记忆化搜索)

给定一个R行C列的矩阵,表示一个矩形网格滑雪场。 矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。 一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。 当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。 下面给出一个矩阵作为例子: 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-2-1。

qq_43738331的博客 255

【记忆化搜索】P1434 滑雪

链接: 洛谷P1434Michael 喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael 想知道在一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子: 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度会减小。在上面的例子中,一条可行的滑坡为 24−17−16−124-17-16-124−17−16−1(从 242424 开始,在 111 结束)。当然

2301_80361697的博客 968

SSL·滑雪【记忆化搜索】

滑雪【记忆化搜索】 SSL 1202 PKU1088Description--Input--Output--Sample Input--Sample Output--解题思路--代码-- Description– Michael喜欢滑雪,这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。 Michael想知道一个区域中...

ヽ(o_ _)o 202

luogu1434:滑雪:记忆化搜索

题目连接 该题是luogu试炼场的2-9:T2 题目大意 给出一个n*m的矩阵,求最长的链; 要求1:方向只有4个:上/下/左右; 要求2:值只能从高到低; 题目分析 因为是100*100,要考虑记忆化; 解题思路 每个点都尝试做起点; 简单记忆化; PS:本题用DP也很容易理解,以后有需要再上代码; 上代码 //luogu1434:滑雪 //每个点都尝试做开头,记忆化处...

liusu201601的博客 310

滑雪 记忆化搜索

记忆化搜索

WananRd 436

滑雪——记忆化搜索

他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形。为了得到更快的速度,滑行的路线必须向下倾斜。现在给定你一个二维矩阵表示滑雪场各区域的高度,请你找出在该滑雪场中能够完成的最长滑雪轨迹,并输出其长度(可经过最大区域数)。在给定矩阵中,最长的滑行轨迹为25-24-23-…-3-2-1,沿途共经过25个区域。第1行: 两个数字r,c(1

no_play_no_games的博客 447

POJ 1088 滑雪 记忆化搜索

#include <iostream>using namespace std; int row ,col;int matrix[105][105]={0};// 保存原始数据int cnt[105][105]={0}; // 记录每一个点的最大滑雪长度int DP(int i, int j){int max = 0; // 如果已经处理过,直接返回(记忆化搜索效率之所...

dikuimei3153的博客 171

POJ 1088 滑雪 (记忆化搜索)

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

110
上一篇: FatMouse and Cheese ————记忆化搜索
下一篇: Longest Increasing Subsequence————LIS个数
陶鸿杰
博客等级 码龄9年 93粉丝 298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值