当前位置: 首页 > news >正文

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

北大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.lryc.cn/news/241762.html

相关文章:

  • Stable Video Diffusion重磅发布,快来看看哪些功能
  • 城市NOA到来时刻,车企密集上车NVIDIA
  • Linux后台运行Python的py文件,如何使ssh工具退出后仍能运行
  • Excel中出现“#NAME?”怎么办?(文本原因)
  • superset 后端增加注册接口
  • 利用 React 和 Bootstrap 进行强大的前端开发
  • 深度学习之基于Pytorch照片图像转漫画风格网络系统
  • 解决No Feign Client for loadBalancing defined,修改Maven依赖
  • 友思特分享 | Neuro-T:零代码自动深度学习训练平台
  • 基于动量的梯度下降
  • ELK+kafka+filebeat企业内部日志分析系统
  • MyBatis-Plus: 简化你的MyBatis应用
  • 在 go 的项目中使用验证器
  • Handler系列-sendMessage和post的区别
  • java中 自动装箱与拆箱,基本数据类型,java堆与栈,面向对象与面向过程
  • C语言第二十八弹--输入一个非负整数,返回组成它的数字之和
  • redis---主从复制及哨兵模式(高可用)
  • 【不同请求方式在springboot中对应的注解】
  • 前端入门(三)Vue生命周期、组件技术、事件总线、
  • 消息推送到微信,快速实现WxPusher
  • 【Spring篇】JDK动态代理
  • 【从零开始实现意图识别】中文对话意图识别详解
  • 腾讯云点播小程序端上传 SDK
  • 【MATLAB源码-第88期】基于matlab的灰狼优化算法(GWO)的栅格路径规划,输出做短路径图和适应度曲线
  • electron使用electron-builder macOS windows 打包 签名 更新 上架
  • autojs项目搭建和入门实践
  • uni-app 跨端开发注意事项
  • 在 vscode 中的json文件写注释,不报错的解决办法
  • 基于uniapp的 电子书小程序——需求整理
  • Hutool HttpRequest 首次请求正常 第二次被系统拦截