水淹七军(递归,又是递归)

北大2023级最强新生问我的,最后他的问题说是重写了一遍就解决了

乐死了,有的时候根本看不出源代码漏了哪里

我的思路是:

一个数组记录本次放水所经过的格子,经过的不再递归

一个数组记录地图上各地点的高度

一个数组记录地图上各地点被水淹过的高度(注意第三行)

开始递归前先判断这个放水点高度是否大于等于司令部所在地点的高度(高度相同也可以淹),和是否被水淹过

每递归一次,要判断是否到了司令部和是否超出边界以及司令部是不是已经被水淹了(算是剪枝)

还要判断这个地方水能不能漫延到(理所当然)

因为高度相同也可以淹,所以必须要多一个数组记录经过的格子

代码如下:

#include<stdio.h>
#include<stdlib.h>
void dg(int x, int y, int occ[201][201]);
int M, N, I, J, X, Y, jud = 0;//表示暂时还没被水淹
struct MAP{int h;//本来的高度int w_h;//后来的高度
}map[201][201];int main(void)
{int K, P;scanf("%d", &K);for(int k = 0; k < K; k++){jud = 0;//输入scanf("%d%d", &M, &N);for(int i = 1; i <= M; i++)for(int j = 1; j <= N; j++){scanf("%d", &map[i][j].h);map[i][j].w_h = map[i][j].h;}scanf("%d%d%d", &I, &J, &P);for(int i = 0; i < P; i++){scanf("%d%d", &X, &Y);int occ[201][201] = {0};if(map[X][Y].h >= map[I][J].h && map[X][Y].h == map[X][Y].w_h)dg(X, Y, occ);}if(jud)  printf("Yes\n");else  printf("No\n");}
}
void dg(int x, int y, int occ[201][201])
{if(occ[x][y])  return;if(x == I && y == J)  jud = 1;if(jud == 1)  return;if(x == 0 || y == 0 || x == M + 1 || y == N + 1)  return;if(map[X][Y].h < map[x][y].h)  return;map[x][y].w_h = map[X][Y].h, occ[x][y] = 1;dg(x + 1, y, occ), dg(x - 1, y, occ), dg(x, y + 1, occ), dg(x, y - 1, occ);return;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/168842.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3 for循环创建的多个e-form 添加校验

v-for 创建 ref <el-form :model"item" :rules"state.rules" :ref"el > getRiskSpreadRef(el, index)" ></el-form>// 定义ref list const riskSpreadRefList ref<HTMLElement[]>([]);// ref存到数组 const getRiskSpread…

物流公司打印用什么软件,佳易王物流运单打印管理系统软件下载

物流公司打印用什么软件&#xff0c;佳易王物流运单打印管理系统软件下载 软件特色&#xff1a; 1、功能实用&#xff0c;操作简单&#xff0c;不会电脑也会操作&#xff0c;软件免安装&#xff0c;已内置数据库。 2、物流开单打印&#xff0c;可以打印两联单或三联单&#x…

基于Vue+SpringBoot的数字化社区网格管理系统

项目编号&#xff1a; S 042 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S042&#xff0c;文末获取源码。} 项目编号&#xff1a;S042&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 源码 & 项目录屏 二、功能模块三、开发背景四、系统展示五…

c语言:模拟实现各种字符串函数

strlen函数&#xff1a; 功能&#xff1a;获取到\0之前的的字符个数。 代码模拟实现函数&#xff1a; //strlen //这里用了递归法&#xff0c; //如abc&#xff0c;1bc&#xff0c;然后11c&#xff0c;接着111&#xff0c;最后读取到\0&#xff0c;1110&#xff0c;得到结果3…

使用Linux JumpServer堡垒机本地部署与远程访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装Jump server二. 本地访问jump server三. 安装 cpolar内网穿透软件四. 配…

宝塔 Linux 面板安装一个高大上的论坛程序 —— Flarum

这个是很早搭建的版本,基于宝塔面板,比较复杂,如果想要简单的搭建方法,可以参看咕咕新写的这篇: 【好玩的 Docker 项目】10 分钟搭建一个高大上的论坛程序 购买腾讯云轻量应用服务器 待补充 登录服务器 待补充 BBR 加速脚本 BBR 加速脚本: BASH cd /usr/src &…

京东数据采集接口推荐(京东大数据分析工具)

随着京东电商平台的不断发展&#xff0c;平台中店铺数量也越来越多&#xff0c;对于电商卖家而言&#xff0c;在电商运营过程中如何做好数据分析也越来越重要。而电商运营数据往往多而杂&#xff0c;想要高效的完成电商数据分析&#xff0c;品牌需要借助一些电商数据分析软件。…

毅速:复杂零件制造首选3D打印

确金属3D打印技术在制造行业的应用日益广泛&#xff0c;为制造业带来了巨大的变革和机遇。这种增材制造技术相较于传统制造工艺具有许多优势&#xff0c;尤其在制造复杂形状零件方面表现出色。 传统制造工艺在制造复杂形状零件时往往面临诸多挑战&#xff0c;如加工难度大、周期…

高性能Mysql第三版学习(一)

学习目标&#xff1a; 高性能Mysql第3版 学习内容&#xff1a; MySQL架构与历史Mysql基座测试服务器性能Schema与数据类型优化创建高性能的索引查询性能优化Mysql高级特性Explain 学习时间&#xff1a; 周一至周五晚上 9点—晚上10点周六晚上9点-10点周日晚上9 点-10点 学习…

FreeRTOS学习之路,以STM32F103C8T6为实验MCU(2-5:队列)

学习之路主要为FreeRTOS操作系统在STM32F103&#xff08;STM32F103C8T6&#xff09;上的运用&#xff0c;采用的是标准库编程的方式&#xff0c;使用的IDE为KEIL5。 注意&#xff01;&#xff01;&#xff01;本学习之路可以通过购买STM32最小系统板以及部分配件的方式进行学习…

Linux【安全 01】云服务器主机安全加固(修改SSHD端口、禁用登陆失败的IP地址、使用密钥登录)

云服务器主机安全加固 1.SSH登录尝试的系统日志信息2.安全加固方法2.1 修改SSHD端口2.2 禁用登陆失败的IP地址2.3 使用密钥登录 3.总结 1.SSH登录尝试的系统日志信息 Last failed login: Sat Oct 7 14:10:39 CST 2023 from xxx.xx.xx.xxx on ssh:notty There were 10 failed …

ORA-14452: 试图创建, 变更或删除正在使用的临时表中的索引

在编写一个test存储过程中出现一个错误报告:ORA-14452: 试图创建, 变更或删除正在使用的临时表中的索引,代码如下 create or replace PROCEDURE TMP_TRANSCRIPT AS str_sql varchar2(500);v_flag number:0; --标识 begin--判断临时表是否存在SELECT COUNT(*) into v_flag FROM…

信息收集小练习

信息收集小练习 本文章无任何恶意攻击行为&#xff0c;演示内容都合规无攻击性 演示如何绕过cdn获取真实ip 使用多地ping该网站 发现有很多ip地址&#xff0c;证明有cdn 此处使用搜索引擎搜索&#xff0c;得到ip 演示nmap工具的常用参数 此处以testfire.net为例 使用多地p…

Vue3的计算属性(computed)和监听器(watch)案例语法

一&#xff1a;前言 Vue3 是 Vue2 的一个升级版&#xff0c;随着 2023年12月31日起 Vue2 停止维护。这意味着 Vue3 将会为未来国内一段时间里&#xff0c;前端的开发主流。因此熟练的掌握好 Vue3 是前端开发程序员所不可避免的一门技术栈。而 Vue3 是 Vue2 的一个升级版&#x…

【阿里云】图像识别 智能分类识别 增加垃圾桶开关盖功能点和OLED显示功能点(二)

一、增加垃圾桶开关盖功能 环境准备 二、PWM 频率的公式 三、pthread_detach分离线程&#xff0c;使其在退出时能够自动释放资源 四、具体代码实现 图像识别数据及调试信息wget-log打印日志文件 五、增加OLED显示功能 六、功能点实现语音交互视频 一、增加垃圾桶开关盖功能…

Flutter之Graphic图表的简单示例

简介 Graphic是一个数据可视化语法和Flutter图表库。 官方github示例 我的gitee示例 网上可用资源很少&#xff0c;只有作者的几篇文章&#xff0c;并且没有特别详细的文档&#xff0c;使用的话还是需要一定的时间去调研&#xff0c;在此简单记录。 示例 以折线图为例&…

我在electron中集成了自己的ai大模型

同学们可以私信我加入学习群&#xff01; 正文开始 前言一、大模型选择二、获取key三、调用api四、调用ai模型api时&#xff0c;解决跨域总结 前言 最近单位把gpt、文心一言、通义千问、星火等等等等你能想到的ai大模型都给禁掉了&#xff0c;简直丧心病狂。 不知道有多少感同…

Kafka配置SASL认证密码登录

​​​​​​1、修改config/server.properties&#xff0c;添加如下内容 listenersSASL_PLAINTEXT://内网ip:9092 advertised.listenersSASL_PLAINTEXT://外网ip:9092 security.inter.broker.protocolSASL_PLAINTEXT sasl.mechanism.inter.broker.protocolPLAIN sasl.enabled.…

青云科技容器平台与星辰天合存储产品完成兼容性互认证

近日&#xff0c; 北京青云科技股份有限公司&#xff08;以下简称&#xff1a;青云科技&#xff09;的 KubeSphere 企业版容器平台成功完成了与 XSKY星辰天合的企业级分布式统一数据平台 V6&#xff08;简称&#xff1a;XEDP&#xff09;以及天合翔宇分布式存储系统 V6&#xf…

Golang并发模型:Goroutine 与 Channel 初探

文章目录 goroutinegoexit() channel缓冲closerangeselect goroutine goroutine 是 Go 语言中的一种轻量级线程&#xff08;lightweight thread&#xff09;&#xff0c;由 Go 运行时环境管理。与传统的线程相比&#xff0c;goroutine 的创建和销毁的开销很小&#xff0c;可以…