第八届蓝桥杯个人赛省赛C/C++ A组 第一题 迷宫

(2017)第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组 题解(第一题和第二题) 前言正好今天在等面试= =学弟让我帮忙做一下题解,我就在这里写好啦。这也是我的第一篇博客=w=我觉得我省赛的水平还是没问题的,第六届第七届我都是吉林省第二名,当然省赛的题目本身对算法的考察度不高。。。很暴力的那种= =这篇题解针对的是对算法了解不深的同学们=w= 所以对于dalao们来说,这篇题解可能过于简单←_←(博客分类竟然没有算法= =)填空题区:结果填空题:要求选手根据题目描述直接填写结果... 阅读详情
标题:迷宫

X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:

L表示走到左边的房间,

R表示走到右边的房间,

U表示走到上坡方向的房间,

D表示走到下坡方向的房间。

X星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!开始的时候,直升机把100名玩家放入一个个小房间内。

玩家一定要按照地上的字母移动。

迷宫地图如下:

------------

UDDLUULRUL

UURLLLRRRU

RRUURLDLRD

RUDDDDUUUU

URUDLLRRUU

DURLRLDLRL

ULLURLLRDU

RDLULLRDDD

UUDDUDUDLL

ULRDLUURRR

------------

请你计算一下,最后,有多少玩家会走出迷宫? 而不是在里边兜圈子。请提交该整数,表示走出迷宫的玩家数目,不要填写任何多余的内容。

如果你还没明白游戏规则,可以参看一个简化的4x4迷宫的解说图:

解题思路:

这题和我之前做的迷宫题目类似,详见我的另一篇博客:http://blog.youkuaiyun.com/Neo_kh/article/details/79432817。对于这类迷宫寻路,一般用递归,即DFS(深度优先搜索)来求解。
 变量说明:
        用char a[10][11]数组存放上述迷宫。
       用一个bool型数组b[10][10]记录对应的a[i][j]点能否走出迷宫。能走出迷宫值为true;不能走出迷宫值为false。
        用一个vis[10][10]数组记录搜索路径,如果访问到a[i][j],则设置vis[i][j]为1;
     首先用两个for循环遍历到迷宫的每一点,对每一点进行深度搜索。深搜时,访问到某点,就将某点的vis[i][j]置为1。于是,如果在深搜过程中碰到“vis[i][j]==1“,说明之前访问过该点;现在又访问到该点说明兜起了圈子,则此深度搜索路径走不出去。于是回溯, 因为该路径上的点都走不出去,需要在回溯时将每一点的b[i][j]置为false;另外还要将每一点的vis[i][j]清零,以便其他点做深搜时再使用vis[i][j]。
        当深搜到边界或遇到“b[i][j]==true”的点,说明能走出去,将该点的b[i][j]置为true,然后回溯。当遇到“b[i][j]==false”时,说明该路径走不出去,回溯false。
    弄清楚深搜的出口和剪枝条件后,就可以将代码写出来了:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char a[10][11]={
					"UDDLUULRUL",
					"UURLLLRRRU",
					"RRUURLDLRD",
					"RUDDDDUUUU",
					"URUDLLRRUU",
					"DURLRLDLRL",
					"ULLURLLRDU",
					"RDLULLRDDD",
					"UUDDUDUDLL",
					"ULRDLUURRR",
					};
bool b[10][10];
int vis[10][10];
bool DFS(int i,int j){
	bool temp;
	if(b[i][j]==true)return true;//回溯出口 
	if(i<0||j<0||i>=10||j>=10){
		return true;//回溯出口	
	}
    if(vis[i][j]==1){//兜圈子了 
		return false;//回溯出口 
	} 
	if(vis[i][j]==0){
		vis[i][j]=1;//标记该点已访问
		switch(a[i][j]){
			case 'U':
				temp=DFS(i-1,j);
				break;
			case 'D':
				temp=DFS(i+1,j);
				break;
			case 'L':
				temp=DFS(i,j-1);
				break;
			case 'R':
				temp=DFS(i,j+1);
				break;
		}
		vis[i][j]=0;//取消标记 
		if(temp==true){
			b[i][j]=true;
			return true;
		}
		else{
			b[i][j]=false;
			return false;
		}
	}
}
int main(){
	int i,j;//计数变量 
	int count=0;
	for(i=0;i<10;i++){//初始化数组 
		memset(vis[i],0,sizeof(vis[i]));
		memset(b[i],false,sizeof(b[i]));
	}
	for(i=0;i<10;i++){
		for(j=0;j<10;j++){
			DFS(i,j);	
		}
	}
	for(i=0;i<10;i++){//最后统计b数组里面有多少个true即为有多少点能出去 
		for(j=0;j<10;j++){
			if(b[i][j]==true)
				count++;
		}
	}
	cout<<count<<endl;
} 

深搜非递归电子老鼠走迷宫 用非递归写的走迷宫,适合初学者使用,注释比较详细,欢迎下载 立即下载

相关推荐

浅谈向量检索

文章目录浅谈向量检索背景什么是向量什么是向量检索距离度量检索方法ANN的基本思路举个容易理解栗子举个正常的例子具体算法树方法KD-TreeAnnoyHash方法LSH 算法矢量量化方法乘积量化码本的建立码字搜索算法倒排乘积量化临近图方法HNSW 算法朴素想法Delaunay算法NSW 主要思想NSW构图NSW查找参考 浅谈向量检索 背景 索引一直被认为是检索引擎最重要的组成部分,之所以数据库能够快速的查询出来结果。系统设计中很多常见的多种数据结构都是为了快速命中索引设计的, 比如 红黑树、跳跃表、倒排索引、

qq_42828391的博客 6552

蓝桥杯第八届真题 :迷宫

点击查看:蓝桥杯历年真题 题解目录 迷宫 评测标准答案: 在这里插入代码片 在这里插入代码片

Xiong-er 的博客 825

SAP农产品增值税进项税解决方案

(三)购进农产品用于生产经营且不构成货物实体的(包括包装物、辅助材料、燃料、低值易耗品等),用于生产适用13%税率货物的扣除率为10%,用于生产适用9%税率货物的扣除率为9%。具体计算公式为: 当期允许抵扣农产品增值税进项税额=当期耗用农产品数量×农产品平均购买单价×扣除率/(1+9%)

weixin_44228539的博客 1195

第八届蓝桥杯省赛 1迷宫

思路: 1、遍历每一种初始位置,将它们的行走路线走一遍 2、如果走出边缘,说明能走出迷宫 3、如果回到了曾今走过的位置,说明走不出 #include #include using namespace std; const int bc = 10; char map[100][100]; int mark[100][100]; //判断从该点出发能不能到达 int judge(int i,int j){ //思路:对每个走过点进行标记 //标记初始化 int a,b; for(a=0;a<bc;a+

xiaobin_23134的博客 194

【上海大学计算机组成原理实验报告】五、机器语言程序实验

机器语言程序实验//理解计算机执行程序的实际过程//学习编制机器语言简单程序的方法//将R1中的数值左移n次送OUT,其中n是R2中的数值。(指令码从10开始)//完成R3=R0×R1,结果送OUT。(指令码从30开始)//建立“中文汇编指令”需要哪些条件?//上海大学计算机组成原理实验报告

HackerKevon的博客 2187

使用vite+react+ts+Ant Design开发后台管理项目(四)

本文将引导开发者从零基础开始,运用、react、react-router、react-redux、Ant Design、less、tailwindcss、axios等前沿技术栈,构建一个高效、响应式的后台管理系统。通过详细的步骤和实践指导,文章旨在为开发者揭示如何利用这些技术工具,从项目构思到最终实现的全过程,提供清晰的开发思路和实用的技术应用技巧。使用vite+react+ts+Ant Design开发后台管理项目(一)使用vite+react+ts+Ant Design开发后台管理项目(二)

lbking666666的专栏 2006

蓝桥杯8——走迷宫(BFS广度优先搜索+最短路径长度)

首先明确题目要求,要求寻找最短路径。解决迷宫的问题思路主要为BFS(广度优先搜索)与DFS(深度优先搜索),而本题目显然适用于BFS,这样我们可以直观的比较出相同的步数条件下,谁会先到终点,这样的出来的即为最短路径。使用BFS,那么我们需要使用队列,即先进先出结构。

OverTheSunn的博客 1267

KEPServerEX6教程:IoT Gateway与MQTT Client实现工业数据双向通信

工业物联网的核心挑战在于异构设备协议与云端平台之间的数据互通。Modbus、S7、OPC UA等现场协议纷繁复杂,而上层应用普遍偏好MQTT、REST等轻量接口,此时需要一个可靠的协议转换层。MQTT作为低带宽、高可靠的发布/订阅消息协议,天然适合工业数据采集与远程控制场景。KEPServerEX6作为工业网关软件,内置IoT Gateway与MQTT Client组件,分别承担数据上行发布与指令下行订阅的职责,形成完整的双向闭环。通过配置Modbus TCP设备驱动、创建Tag、设置MQTT Broker

weixin_33787529的博客 387

蓝桥杯2017年第八届C/C++省赛A组第一题-迷宫

题目描述 源代码 思路: 遍历每一个点 建立一个辅助标记数组,能够成功走出迷宫的人,都不会会到原来走过的地方 #include <iostream> #include <cstring> using namespace std; int ans; int vis[10][10]; int main() { char a[10][10]; for(int i=0;i<10;i++) for(int j=0;j<10;j++)

hero_th的博客 398

让 ABAP 内表真正释放内存:从 CLEAR、FREE 到打破 Table Sharing 的实战技巧

ABAP内表内存管理的关键在于理解其运行时结构:DELETE操作仅逻辑删除行而不会释放内存,CLEAR或FREE才能真正回收内存。常见的误区包括误判空表状态和忽视内表共享机制。实际应用中,大表筛选后应采用VALUE表达式或逐行插入方式重建表体以释放内存。典型案例显示,正确处理内表内存可显著降低SAP Gateway和批处理程序的内存消耗,提升系统稳定性。开发时需结合调试工具观察内存状态,避免因共享机制导致无效回收。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 324

OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南——原生“龙虾”OpenClaw快速部署、问题速查与避坑指南

至此,你已经完成了从选购服务器到配置AI大脑的全过程。无论是想在云上养一只7x24小时的“龙虾”,还是在本地体验AI Agent的魅力,上述指南都提供了明确的路径。下一步,就是接入飞书、钉钉或QQ,让你的OpenClaw真正开始“干活”赚钱了 [citation:6]。

冯·诺依曼 990

迷宫(模拟)

1.问题描述:   X星球的一处迷宫游乐场建在某个小山坡上。 它是由10x10相互连通的小房间组成的。 房间的地板上写着一个很大的字母。 我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间, R表示走到右边的房间, U表示走到上坡方向的房间, D表示走到下坡方向的房间。 X星球的居民有点懒,不愿意费力思考。 他们更喜欢玩运气类的游戏。这个游戏也是如此! 开始的时候...

computer science 1371

国科大学习资料--现代数字信号处理I(张颢)--2020年期末考试试卷

国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 =========================================================================================================================================================

无名何许人的博客 3574

倪文迪陪你学蓝桥杯2021寒假每日一题:(2017省赛A第1、2题)

倪文迪(华东理工大学软件192班)带你学蓝桥杯 2021年寒假每日一题。

罗勇军的博客 2万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

第八届蓝桥杯大赛个人赛省赛C/C++A组解析

1.迷宫 X星球的一处迷宫游乐场建在某个小山坡上。 它是由10x10相互连通的小房间组成的。 房间的地板上写着一个很大的字母。 我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间, R表示走到右边的房间, U表示走到上坡方向的房间, D表示走到下坡方向的房间。 X星球的居民有点懒,不愿意费力思考。 他们更喜欢玩运气类的游戏。这个游戏也是如此! 开始的时候,直升机把100名玩家放...

Samzhu 355

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C/C++ 第八届蓝桥杯大赛个人赛省赛(大学A组) 题解

文章目录1. 迷宫2. 跳蚱蜢3. 魔方状态4. 方格分割5. 字母组串6. 最大公共子串7. 正则问题8. 包子凑数9. 分巧克力10. 油漆面积 题目 类型 迷宫 结果填空 跳蚱蜢 结果填空 魔方状态 结果填空 方格分割 结果填空 字母组串 代码填空 最大公共子串 代码填空 正则问题 程序设计 包子凑数 程序设计 分巧克力 程序设计 油漆面积 程序设计 1. 迷宫 本题总分:5分 问题描述 X星球的一处迷宫游乐场建在某个小山坡上。 它是由1

陈陈陈Chan的博客 772

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

c语言软件编程考生须知,倪文迪带你学蓝桥杯(2021寒假每日一题)

2021年寒假每日一题,2017~2019年的省赛真题。本文内容由倪文迪(华东理工大学计算机系软件192班)提供。文章目录一、2017年蓝桥杯软件类 C语言大学A组1. 迷宫附:2017年第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组考生须知OJ:可以到http://oj.ecustacm.cn/交题,从第3页开始是历年真题:http://oj.ecustacm.cn/problems...

weixin_36221082的博客 762

蓝桥杯第十五届抱佛脚(一)手算和思维题

知识点梳理 思维题(杂题):不需要算法和数据结构,只需要逻辑、推理的题目,难度可难可易。考察思维能力和编码能力,只能通过大量做题来提高。 BFS 搜索和 DFS 搜索:也就是暴力搜索。这是非常基本的算法,是基础中的基础。 动态规划:线性 DP,以及一些 DP 应用,例如状态压缩 DP、树形 DP 等。 简单数学和简单数论。 简单的字符串处理、输入输出,简单图论。 基本算法:例如排序、排列、二分、倍增、差分、贪心。 基本数据结构:队列、栈、链表、二叉树等。

rm -rf/坏习惯 2006

【蓝桥杯】第八届java A组题详解

1 标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上。 它是由10x10相互连通的小房间组成的。 房间的地板上写着一个很大的字母。 我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间, R表示走到右边的房间, U表示走到上坡方向的房间, D表示走到下坡方向的房间。 X星球的居民有点懒,不愿意费力思考。 他们更喜欢玩运气类的游戏。这个游戏也是如此! 开始的时候,直升机把100名玩家放入一...

i6223671的博客 1299

蓝桥杯2017初赛:迷宫 (dfs搜索)

[蓝桥杯2017初赛]迷宫 Description X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。 房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间,R表示走到右边的房间,U表示走到上坡方向的房间,D表示走到下坡方向的房间。 X星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此! 开始的时候...

江湖不信眼泪 653

Java实现第八届蓝桥杯迷宫

迷宫 题目描述 X星球的一处迷宫游乐场建在某个小山坡上。 它是由10x10相互连通的小房间组成的。 房间的地板上写着一...

5731

蓝桥杯2017迷宫

//深度优先搜索// X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。 房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间,R表示走到右边的房间,U表示走到上坡方向的房间,D表示走到下坡方向的房间。 X星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此! 开始的时候,直升机把100名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。 迷宫地图如下: UDDLUULRUL UURLLLRRRU RRUURL

achcvb的博客 306

蓝桥杯迷宫

题目描述 X星球的一处迷宫游乐场建在某个小山坡上。 它是由10x10相互连通的小房间组成的。 房间的地板上写着一个很大的字母。 我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间, R表示走到右边的房间, U表示走到上坡方向的房间, D表示走到下坡方向的房间。 X星球的居民有点懒,不愿意费力思考。 他们更喜欢玩运气类的游戏。这个游戏也是如此! 开始的时候,直升机把100名玩家放入一个个小房间内。 玩家一定要按照地上的字母移动。 迷宫地图如下: UDDLUULRUL UURLLLRRRU RRUUR

鲍鲍 395

2017年蓝桥杯省赛A组第一题 迷宫

题目 X星球的一处迷宫游乐场建在某个小山坡上。 它是由10x10相互连通的小房间组成的。 房间的地板上写着一个很大的字母。 我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间, R表示走到右边的房间, U表示走到上坡方向的房间, D表示走到下坡方向的房间。 X星球的居民有点懒,不愿意费力思考。 他们更喜欢玩运气类的游戏。这个游戏也是如此! 开始的时候,直升机把100名玩家放入一个...

Viator 505

(八省)蓝桥真题 迷宫

X星球的一处迷宫游乐场建在某个小山坡上。 它是由10x10相互连通的小房间组成的。 房间的地板上写着一个很大的字母。 我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间, R表示走到右边的房间, U表示走到上坡方向的房间, D表示走到下坡方向的房间。 X星球的居民有点懒,不愿意费力思考。 他们更喜欢玩运气类的游戏。这个游戏也是如此! 开始的时候,直升机把100名玩家放入一个个小房...

Lesel的博客 580

蓝桥杯(迷宫问题)

蓝桥杯迷宫问题(dfs思想的运用)

Bingbonging的博客 2354
上一篇: 第八届蓝桥杯个人赛省赛C/C++ A组考生须知
下一篇: 动态规划详解(第一讲)
Neo_kh
博客等级 码龄9年 57粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值