1432: 【蓝桥杯】:剪格子(迷宫问题变体)
注意输入:
m表示宽度,n表示高度(m表示列,n表示行)
dfs:
从左上角开始走迷宫,如果走过路径的和为SUM/2,记录走过数字个数
求走过数字的最小值
代码:
#include<iostream>
using namespace std;
const int MAX=15;
int n,m;
int size,sum,now,ans=100;
int map[MAX][MAX];//图作为全局变量
int vis[MAX][MAX];//防止走回头路 ,作为全局变量
int go[][2]={{1,0},{0,1},{-1,0},{0,-1}};//方向数组
void dfs(int x,int y)
{//走第一步 vis[x][y]=1;now+=map[x][y];size++;if(size>=ans)return ;//剪枝:当走的格子数已经大于前面的最小数量就不必再继续搜索if(now*2==sum){ans=min(ans,size);return ;}for(int i=0;i<4;i++)//往四个方向走以寻求可以剪的地方 {int new_x=x+go[i][0],new_y=y+go[i][1];if(vis[new_x][new_y]==0 && new_x>=1 && new_x<=n&& new_y>=1 && new_y<=m){dfs(new_x,new_y);vis[new_x][new_y]=0; //回溯的时候需要将已访问过的点还原为未访问size--; //同时将用于标记格子数的变量减1 now-=map[new_x][new_y]; //以及把用于记录当前访问格子总和的变量还原 }}} int main(){cin>>m>>n;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>map[i][j];sum+=map[i][j];}}dfs(1,1);if(ans==100)cout<<0<<endl;elsecout<<ans<<endl;return 0; }
参考:【蓝桥杯】历届试题 剪格子(深度优先搜索dfs、广度优先搜索bfs)_the_ZED的博客-CSDN博客
1432: 【蓝桥杯】:剪格子(迷宫问题变体)相关推荐
- java实现第四届蓝桥杯剪格子
剪格子 题目描述 如图p1.jpg所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子 ...
- 蓝桥杯 python 走迷宫 BFS
蓝桥杯 python 走迷宫 BFS 题目描述 给定一个 N × × × M 的网格迷宫 G.GG的每个格子要么是道路,要么是障碍物(道路用 1 表示,障碍物用 0 表示). 已知迷宫的入口位置为 ( ...
- java蓝桥杯省赛第十届_2019年第十届蓝桥杯省赛-迷宫(BFS/Excel大法)
这题用dfs搜不出来,需要使用bfs并记录路径,设置好方向顺序跑就ok 然而毕竟是暴力杯,我们的原则是代码能省就省(懒癌晚期 于是乎网上便出现了形形色色的题解,笔者综合了各路大神神乎其技的思想,总结出 ...
- java蓝桥杯练习 格子刷油漆
java蓝桥杯练习 格子刷油漆 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形(如下图所示),现需要把这些格子刷上保护漆. 你 ...
- 蓝桥杯题目练习 提升篇 [蓝桥杯2019初赛]迷宫
[蓝桥杯2019初赛]迷宫 题目描述 下图给出了一个迷宫的平面图,其中标记为1 的为障碍,标记为0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为左上角, ...
- [蓝桥杯2019初赛]迷宫-DFS、BFS两种方法
迷宫问题的最短路,加最小字典序 迷宫文件maze.txt传送门 作者写的2019年B组蓝桥杯解集 . . . DFS的版本 #include<iostream> #include<c ...
- adv147(蓝桥杯) 学霸的迷宫 bfs
问题描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...
- 蓝桥杯.剪邮票(DFS)
Question: Result: 116 Solve: 这个题意还是比较好懂的,就是12个数里找出5个数,然后看这5个数在方格中的位置是否相连, 代码也是这个思路,但确实不太好写,我换了好几种方案 ...
- 蓝桥杯-学霸的迷宫-广搜-java
算法提高 学霸的迷宫 时间限制:1.0s 内存限制:256.0MB 问题描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面 ...
最新文章
- pyspark sparksession_pyspark中的行列互转
- C++ MFC控制台输出调试信息
- C语言数据类型转换(自动类型转换 强制类型转换)
- 计算机硬件实现乘法是什么,乘法器
- Kubernetes学习总结(2)——Kubernetes设计架构
- Android的清单文件添加百度地图SDK
- python中运行linux命令
- 动态连接_二维动画动态连接基础
- STC 18B20温度传感器读写程序
- oracle卸载步骤图解,Oracle安装卸载图文教程详解
- HMM原理解析(转载)
- 实现微信浏览器内打开App Store链接
- Windows 7中C:/Users/用户名/AppData里面的文件概述
- 对excel表格按照某个字段拆分
- SGMII光模块知识百科
- 【Linux】uptime命令详解平均负载
- html网页架构图,html网页文件基本写法及结构
- 爬虫 (二十一) 最完整的文件操作(值得收藏) (十二)
- 狂人日记day12 day13
- BIM建筑环境规则和分析(BERA)语言介绍(三)第二章 背景