滑雪(记忆化搜索)

2023-11-19

题目

题解

记忆化搜索模板题。


记忆化搜索的核心:
① 本质是带剪枝的深搜。
② 当某点的dp已赋值时,返回该值。
③ 其他情况进行深度搜索。


模板:

dfs(u点) {
	if u点的 dp 已经有值了 : return u点的 dp 值
	else 说明第一次到达u,则为u的 dp 赋初值
	for 遍历四个方向,确定合理的下一个位置 :
		通过深搜dfs返回的值更新u点的 dp 值
	return u点的 dp 值
}

main() {
	for 遍历全部起点s :
		ans = max/min{ans, dfs(s)}
}

代码

// 滑雪 记忆化搜索 
#include<bits/stdc++.h>
using namespace std;
const int N = 310;

int dir[4][2] = {-1, 0, 1, 0, 0, -1, 0, 1};
int n, m;
int dp[N][N], a[N][N], ans;

int dfs (int x, int y) {
	if (dp[x][y] != 0) return dp[x][y]; // 如果(x,y)的dp已经有值了,说明(x,y)这个点的价值已经固定了!之后再遇到要计算该点价值的情况直接返回即可。
	if (dp[x][y] == 0) dp[x][y] = 1; // 如果dp为0,说明第一次计算该点,所以赋值为1,表示从任意一个点开始滑雪,高度至少为1。
	for (int k = 0;k < 4;k ++) { // 遍历四个方向
		int tx = x + dir[k][0], ty = y + dir[k][1]; // 下一个位置
		if (tx < 1 || ty < 1 || tx > n || ty > m || a[x][y] <= a[tx][ty]) continue; 
		// 如果超界或者当前位置的高度不超过下一个位置的高度,则continue
		// a[x][y] <= a[tx][ty]这个条件保证了不需要设置一个bool数组控制哪些位置已经遍历过(需要自己理解)
		dp[x][y] = max(dp[x][y], dfs(tx, ty) + 1); // 更新(x,y)位置(也就是当前位置)的价值;dfs返回的就是(tx,ty)的价值
	}
	return dp[x][y]; // 返回计算结果
}

int main ()
{
	cin >> n >> m;
	for (int i = 1;i <= n;i ++)
		for (int j = 1;j <= m;j ++)
			cin >> a[i][j];
	
	for (int i = 1;i <= n;i ++) 
		for (int j = 1;j <= m;j ++)
			if (dp[i][j] == 0) 
				dp[i][j] = dfs(i, j),
				ans = max(ans, dp[i][j]); // 确定一个最大的即可。只要是计算完的dp,一定是最终的dp,这时对记忆化搜索的理解。
	
	cout << ans << endl;
	
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

滑雪(记忆化搜索) 的相关文章

  • C语言动态内存开辟,malloc,calloc,free,realloc函数使用

    目录 一 内存的动态分配 1 函数malloc 2 函数calloc 3 函数realloc 4 函数free 关于动态内存错误的操作案例 一 内存的动态分配 1 函数malloc 函数原型 void malloc size t size
  • 为什么抖音总显示连不上服务器,抖音登录不上怎么回事

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 以抖音v12 5 0为例 抖音登录不上 一般来说都是由于网速过慢 无法连接抖音的服务器 网速过慢一般都是由于手机的信号过低 或者是处于在人群较多的地方 造成了手机的网速变慢
  • Euromap 63协议认识

    Euromap 63协议认识 一 用途 Euromap 63是欧洲塑料和橡胶机械制造商协会颁布的专用于注塑机和上位计算机进行数据交互的协议 全称 Euromap 63 SPI SPI 塑料工业协会 Euromap 63的目标是为不同制造商的

随机推荐

  • Arduino String.h库函数详解

    此库中包含 1 charAT 2 compareTo 3 concat 4 endsWith 5 equals 6 equalslgnoreCase 7 getBytes 8 indexOf 9 lastlndexOf 10 length
  • 控制理论个人学习笔记-非线性系统理论

    文章目录 非线性系统理论 非线性系统的一般概念 相平面基础 非线性系统的相平面分析 描述函数法基础 非线性系统的描述函数法分析 非线性系统理论 非线性系统的一般概念 典型非线性 死区 饱和 间隙 摩擦 继电特性 继电特性使得系统产生振荡 死
  • 利用Java访问WEB Service

    最近在学习Web Service 发现了一个国内的Web Service提供站点 其中最简单的是查询QQ在线状态服务 我通过Java直接发送SOAP请求文件访问Web Service成功 这种方式实现比较简单 不需要第三方的软件包 impo
  • STEP_7计数器相关

    计数器的使用
  • 阿里云服务器租用费用清单表(CPU内存带宽磁盘)

    阿里云服务器租用费用包括CPU内存 公网带宽和系统盘三部分 云服务器购买可以选择活动机型也可以选择自定义购买 活动机型配置固定选择不自由 自定义购买配置自由选择但是费用贵的一批 阿里云百科来详细说下云服务器1核2G 2核4G 4核8G 8核
  • VMware vSphere 6.7先睹为快

    vSphere是老朋友了 还用再多介绍吗 最新的好消息是 VMware vSphere推出了最新版本6 7 相较两年前推出的VMware vSphere 6 5版本 新增了很多强大的功能 作为业内领先的虚拟化和云平台 vSphere的一举一
  • nginx root&alias文件路径配置

    nginx指定文件路径有两种方式root和alias 这两者的用法区别 使用方法总结了下 方便大家在应用过程中 快速响应 root与alias主要区别在于nginx如何解释location后面的uri 这会使两者分别以不同的方式将请求映射到
  • 第4章 用GPT-2生成文本

    BERT 是基于双向 Transformer 结构构建 而 GPT 2 是基于单向 Transformer 这里的双向与单向 是指在进行注意力计算时 BERT会同时考虑被遮蔽词左右的词对其的影响 融合了双向上下文信息 它比较适合于文本生成类
  • IO流介绍和异常处理

    IO流 1 1IO的分类 根据数据的流向分为 输入流和输出流 输入流 把数据从其他设备上读取到内存中的流 输出流 把数据从内存中写到其他设备上的流 根据功能类型分为 字节流和字符流 字节流 以字节为单位 读写数据的流 字符流 以字符为单位
  • tomcat无法启动,也没找到错误日志

    最近做项目的时候 遇到一个问题 项目启动不了 并且没有任何错误日志 1 bug描述 在做项目的时候 启动Tomcat时报错 2 bug信息 Connected to server 2017 11 16 09 28 36 551 Artifa
  • Python:用tkinter制做一个音乐下载小软件

    人生苦短 我用Python 平常我们下载的歌曲 都是各种妖魔鬼怪的格式横行 想下载下来用一下都不行 还只能在它的播放器内听 这谁受得了 学Python是用来干嘛的 当然是解决问题咯 于是我直接写了一手音乐下载软件 强制全部保存mp3 这样就
  • netty服务端的代码

    client code 客户端的ChannelHandler集合 由子类实现 这样做的好处 继承这个接口的所有子类可以很方便地获取ChannelPipeline中的Handlers 获取到handlers之后方便ChannelPipelin
  • Android应用开发(35)SufaceView基本用法

    Android应用开发学习笔记 目录索引 参考Android官网 https developer android com reference android view SurfaceView 一 SurfaceView简介 SurfaceV
  • c语言答案计算鸡兔同笼,鸡兔同笼-题解(C语言代码,思路清晰,简单易懂)

    解题思路 设鸡和兔子的数量为x y 则有x y n 2x 4y m 即可得x 4n m 2 y m 2n 2 只有x y为分数 或者为负数时 即为无解情况 详细代码如下 include int main double n m chicken
  • solc安装指定版本

    1 系统linux ubuntu20 04 2 solc安装指定版本 在编译的时候报错 Error Data location must be storage or memory for constructor parameter but
  • 残差神经网络(ResNet)

    残差神经网络的主要贡献是发现了退化现象 并针对退化现象发明了快捷连接 shortcut connection 极大的消除了深度过大的神经网络训练困难问题 1 神经网络越深准确率越高 假设一个层数较少的神经网络已经达到了较高准确率 可以在这个
  • TB-RK3399pro(Fedora28)图形界面与字符界面的切换

    TB RK3399pro Fedora28 使用的是LXDE图形界面 使用时默认打开7个屏幕 分别是tty1到tty6 加上一个没名字的tty7 LXDE为tty1号屏幕 若要切换至字符界面 使用快捷键 Ctrl Alt F2 F2也可以为
  • Wps ppt中无法打开超链接外部文件的解决办法。

    今天突然发现 在原来的Wps ppt中的所有超链接视频或照片都无法打开了 以下是解决办法 供参考 主要原因是Windows10系统升级出现的冲突问题 请卸载这两个补丁 KB5015807和KB5016066 或者卸载其中之一即可打开
  • Oracle 设定允许访问的IP地址

    开启按ip地址访问 修改 oracle10 app db network admin sqlnet ora 在文件最后加下列2行 vim sqlnet ora tcp validnode checking yes tcp invited n
  • 滑雪(记忆化搜索)

    题目 题解 记忆化搜索模板题 记忆化搜索的核心 本质是带剪枝的深搜 当某点的dp已赋值时 返回该值 其他情况进行深度搜索 模板 dfs u点 if u点的 dp 已经有值了 return u点的 dp 值 else 说明第一次到达u 则为u