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

C语言基础题:迷宫寻路(C语言版)

1.题目描述


机器猫被困在一个矩形迷宫里。
迷宫可以视为一个n x m 矩阵,每个位置要么是空地,要么是墙。机器猫只能从一个空地走到其上、下、左、右的空地。
机器猫初始时位于(1,1)的位置,问能否走到(n,m)位置。

2.输入格式


第一行,两个正整数 n,m。
接下来几行,输入这个迷宫。每行输入一个长为 m 的字符串,#表示墙,. 表示空地。

3.输出格式


仅一行,一个字符串。如果机器猫能走到(n,m),则输出 Yes;否则输出 No 。

4.输入输出样例

1.输入:
3 5
.##.#
.#...
...#.
2.输出:
Yes

5.说明/提示


样例解释
路线如下:(1,1)→(2,1)→(3,1)→(3,2)→(3,3)→(2,3)→(2,4)→(2,5)→(3,5)

数据规模与约定
对于 100% 的数据,保证1< n,m < 100,(1,1)和(n,m)均为空地。

代码:

#include <stdio.h>
#include <stdlib.h>#define MAXN 1000typedef struct {int x, y;
} Point;int n, m;
char maze[MAXN][MAXN + 1];
int visited[MAXN][MAXN]; // 访问标记
Point queue[MAXN * MAXN]; // 队列用于 BFS
int front = 0, rear = 0;// 移动方向:上下左右
int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};void enqueue(Point p) {queue[rear++] = p;
}Point dequeue() {return queue[front++];
}int is_valid(int x, int y) {return (x >= 0 && x < n && y >= 0 && y < m && maze[x][y] == '.' && !visited[x][y]);
}int bfs() {enqueue((Point){0, 0}); // 从 (0,0) 开始visited[0][0] = 1; // 标记为已访问while (front < rear) {Point current = dequeue();// 如果到达终点 (n-1, m-1)if (current.x == n - 1 && current.y == m - 1) {return 1; // 可到达}// 检查四个方向for (int i = 0; i < 4; i++) {int new_x = current.x + dir[i][0];int new_y = current.y + dir[i][1];if (is_valid(new_x, new_y)) {visited[new_x][new_y] = 1; // 标记为已访问enqueue((Point){new_x, new_y}); // 入队}}}return 0; // 不可到达
}int main() {scanf("%d %d", &n, &m);// 读取迷宫for (int i = 0; i < n; i++) {scanf("%s", maze[i]);}// 如果起点或终点是墙,直接输出 Noif (maze[0][0] == '#' || maze[n-1][m-1] == '#') {printf("No\n");return 0;}// 执行 BFSif (bfs()) {printf("Yes\n");} else {printf("No\n");}return 0;
}

相关文章:

C语言基础题:迷宫寻路(C语言版)

1.题目描述 机器猫被困在一个矩形迷宫里。 迷宫可以视为一个n x m 矩阵&#xff0c;每个位置要么是空地&#xff0c;要么是墙。机器猫只能从一个空地走到其上、下、左、右的空地。 机器猫初始时位于(1,1)的位置&#xff0c;问能否走到(n,m)位置。 2.输入格式 第一行&#xff0…...

力扣-1两数之和2两数相加-2024/8/3

1、两数之和 解法一 暴力法&#xff08;2个for循环&#xff09; class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for ii in range(len(nums)):for jj in range(ii1, len(nums)):if nums[ii]nums[jj] target:return [ii,jj]解法二 哈希表法…...

简站WordPress主题 专业的WordPress建站服务商

简站WordPress主题是一款备受推崇的WordPress主题&#xff0c;以其简洁、实用、无插件和更安全的特性脱颖而出。以下是关于简站WordPress主题的一些详细分析&#xff1a; 简站WordPress主题采用了扁平化设计风格&#xff0c;界面简洁明了&#xff0c;这使得网站看起来更加专业…...

Final Shell for Mac 虚拟机连接工具【简单易操作,轻松上手】【开发所需连接工具】

Mac分享吧 文章目录 效果一、下载软件二、安装软件三、运行测试安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件 链接&#xff1a;http://www.macfxb.cn 二、安装软件 三、运行测试 安装完成&#xff01;&#xff01;&#xff01;...

Oracle JDK:版本、支持与许可

文章目录 版本支持许可BCLOTNNFTCFAQ其他OpenJDK和其他的JDK实现JDK、JRE、JVMJava SE、Java EE、Java ME版本 Oracle JDK的最新版本和历史版本的官方下载地址(可查询版本发行说明等信息):https://www.oracle.com/cn/java/technologies/downloads/ 常规版本(非LTS):每隔…...

大模型学习笔记 - LLM 之RLHF人类对齐的简单总结

LLM - RLHF人类对齐的简单总结 LLM-人类对齐 1. RLHF(Reinforcement Learning from Human Feedback, RLHF),基于人类反馈的强化学习2 奖励模型训练3 强化学习训练 3.1 PPO介绍3.2 进阶的RLHF的介绍 3.2.1. 过程监督奖励模型3.2.2. 基于AI反馈的强化学习3.2.3. 非强化学习的对齐…...

【从零开始一步步学习VSOA开发】 概述

概述 概念 VSOA&#xff08;Vehicle SOA&#xff09;是翼辉为了解决任务关键型系统不能适用当前微服务通信架构问题而设计的⼀个轻量级适用于任务关键领域的微服务通信架构&#xff0c;以方便开发者构建大型分布式松耦合软件系统&#xff0c;且支持并行开发。 特点 其主要特…...

小程序背景图片无法通过 WXSS 获取

问题&#xff1a;pages/index/index.wxss 中的本地资源图片无法通过 WXSS 获取 可以使用网络图片&#xff0c;或者 base64&#xff0c;或者使用标签。 将图片转换为base64&#xff0c;地址 base64图片在线转换工具 - 站长工具 在这里把要使用的图片转换一把&#xff0c;然后将得…...

CC++内存魔术:掌控无形资源

hello,uu们,今天呢我们来详细讲解C&C的内存管理,好啦,废话不多讲,开干 1:C/C内存分布 2:C语言中动态内存管理方式:malloc/calloc/realloc/free 3:C内存管理方式 3.1:new/delete操作内置类型 3.1.1:代码1 3.1.2:代码2 3.2:new和delete操作自定义类型 3.2.1:C语言创建…...

算法--初阶

1、tips 1.1、set求交集 {1,2,3} & {2,3} & {1,2} {2} 其实就是位运算&#xff0c; 只有set可以这样使用&#xff0c; list没有这种用法 {1,2,3} | {2,3, 4} | {1,2} {1, 2, 3, 4} 并集 1.2、*与** * 序列(列表、元组)解包&#xff0c;如果是字典&#xff0c;那…...

通过Java实现插入排序(直接插入,希尔)与选择排序(直接选择,堆排)

目录 &#xff08;一&#xff09;插入排序 1.直接插入排序 &#xff08;1&#xff09;核心思想&#xff1a; &#xff08;2&#xff09;代码实现&#xff08;以从小到大排序为例&#xff09;&#xff1a; &#xff08;3&#xff09;代码分析&#xff1a; 2.希尔排序&#xff08…...

大型分布式B2B2C多用户商城7.0企业版源码分享【java语言、方便二次开发】

项目介绍 项目基于SpringBoot开发&#xff0c;运营端和商户端采用ElementVue&#xff0c;买家使用采用VueIviewnuxt服务端渲染。使用到的中间件有Redis、RabbitMQ、ElasticSearch、FastDFS、Mongodb等。主要功能包括有运营管理、商品管理、订单管理、售后管理、会员管理、财务…...

C++的结构体、联合体、枚举类型(一)

1.C++的结构体 2.C++的联合体 3.C++的枚举类型 1.C++的结构体 (1)C++中定义结构体变量,可以省略struct关键字 struct XX{…}; XX x;//定义结构体变量直接省略struct(2)C++结构体中可以直接定义函数,谓之成员函数(又叫方法)(3)在成员函数中可以直接访问该结构体的成员变…...

搭建高可用OpenStack(Queen版)集群(一)之架构环境准备

一、搭建高可用OpenStack&#xff08;Queen版&#xff09;集群之架构环境准备 一、架构设计 二、初始化基础环境 1、管理节点创建密钥对&#xff08;方便传输数据&#xff09; 所有控制节点操作 # ssh-keygen #一路回车即可 Generating public/private rsa key pair. Enter f…...

通过Stack Overflow线程栈溢出的问题实例,详解C++程序线程栈溢出的诸多细节

目录 1、问题说明 2、从Visual Studio输出窗口中找到了线索&#xff0c;发生了Stack Overflow线程栈溢出的异常 3、发生Stack Overflow线程栈溢出的原因分析 4、线程占用的栈空间大小说明 5、引发线程栈溢出的常见原因和场景总结 6、在问题函数入口处添加return语句&…...

LeetCode刷题笔记 | 3 | 无重复字符的最长子串 | 双指针 | 滑动窗口 | 2025兴业银行秋招笔试题 | 哈希集合

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 这是一道银行的面试题&#xff0c;就是简单&#xff1f;&#xff01; LeetCode链接&#xff1a;3. 无重复字符的最长子串 1.题目描述 给定一个字符串 s &#xff0c…...

验证cuda和pytorch都按照成功了

要验证您的PyTorch是否能够调用CUDA&#xff0c;您可以执行以下步骤&#xff1a; 1. **检查CUDA是否可用**&#xff1a; 在Python中运行以下代码来检查CUDA是否可用&#xff1a; python import torch print(torch.cuda.is_available()) 如果输出为 True&…...

iOS开发如何自己捕获Crash

为了在iOS中捕获和处理未捕获的Objective-C异常和系统信号引起的崩溃&#xff0c;可以使用NSSetUncaughtExceptionHandler和标准的Unix信号处理机制来实现。这能帮助你记录绝大部分的崩溃信息。以下是详细的实现步骤和代码示例&#xff1a; 一、系统崩溃处理 通过NSSetUncaug…...

雪花算法(Snowflake Algorithm)

雪花算法&#xff08;Snowflake Algorithm&#xff09;是一种分布式唯一ID生成算法&#xff0c;主要用于生成全球唯一的ID&#xff0c;广泛应用于分布式系统中&#xff0c;例如在数据库中作为主键。这个算法最初由Twitter提出&#xff0c;并且被广泛使用在很多大规模系统中。有…...

〖任务1〗ROS2 jazzy Linux Mint 22 安装教程

前言&#xff1a; 本教程在Linux系统上使用。 目录 一、linux安装二、linux VPN安装三、linux anaconda安装&#xff08;可选&#xff09;四、linux ROS2 安装五、rosdep init/update 解决方法六、安装GUI 一、linux安装 移动硬盘安装linux&#xff1a;[LinuxToGo教程]把ubunt…...

Windows Cleaner:彻底告别C盘爆红的免费开源解决方案

Windows Cleaner&#xff1a;彻底告别C盘爆红的免费开源解决方案 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 面对Windows系统使用过程中C盘空间不断告急的困扰…...

晶体功率测试原理与MAX9485音频时钟应用实践

1. 晶体功率测试的背景与意义在音频时钟系统设计中&#xff0c;晶体振荡器的功率控制是个容易被忽视却至关重要的参数。以我们常用的MAX9485音频时钟发生器为例&#xff0c;其核心的VCXO&#xff08;压控晶体振荡器&#xff09;模块直接决定了整个系统的时钟精度。记得2013年参…...

Flutter 告别 Rosetta:揭秘 iOS 工具链原生适配 M 芯片的“折腾”史

如果你是 macOS 用户&#xff0c;一定对 Apple Silicon&#xff08;M1/M2/M3&#xff09;的性能赞不绝口。但在光鲜的背后&#xff0c;很多底层开发工具其实一直在靠 Rosetta 2 偷偷「苟延残喘」。今天&#xff0c;我们通过复盘近期 Flutter 官方的一个核心 PR&#xff0c;来看…...

基于MCP协议与向量数据库的AI代码记忆系统实战指南

1. 项目概述&#xff1a;当AI助手拥有“长期记忆”最近在折腾AI应用开发的朋友&#xff0c;可能都遇到过同一个痛点&#xff1a;你让Claude或者GPT帮你分析一个复杂的代码库&#xff0c;第一次对话时&#xff0c;它能把项目结构、核心逻辑讲得头头是道。但当你第二天再打开聊天…...

PyTorch模型参数管理:从torch.nn.Parameter到高效训练实践

1. 理解torch.nn.Parameter的本质 第一次接触PyTorch的torch.nn.Parameter时&#xff0c;我也曾困惑它和普通Tensor的区别。直到在实际项目中踩了几个坑&#xff0c;才真正明白它的价值。让我们从一个简单的例子开始&#xff1a; import torch import torch.nn as nn# 普通Te…...

HTML5 教程

HTML5 教程 引言 HTML5,作为现代网页开发的核心技术之一,自从推出以来就受到了广泛的关注和认可。它不仅改进了原有的HTML特性,还引入了新的元素和API,使得网页设计和开发更加高效、强大。本教程旨在为您提供一个全面的HTML5学习路径,帮助您快速掌握HTML5的基础知识和高…...

人生杠杆具象化的庖丁解牛

它的本质是&#xff1a;**找到那些 投入一次努力&#xff0c;却能产生无限次复用或指数级放大效果 的工具、媒介或关系。它打破了“时间金钱”的线性交换逻辑&#xff0c;实现了 “单位时间产出最大化”。这是一种 从“加法思维”到“乘法思维” 的范式转移。 如果把人生比作物…...

别再到处找激活码了!手把手教你用vlmcsd在Windows上自建KMS服务器(附各版本密钥)

企业级Windows批量激活解决方案&#xff1a;安全高效的本地KMS部署指南 在数字化办公环境中&#xff0c;批量激活Windows操作系统一直是IT管理员面临的常见挑战。传统单机激活方式效率低下&#xff0c;而依赖外部KMS服务器又存在连接不稳定、隐私泄露等潜在风险。本文将深入探讨…...

量子计算误差缓解技术解析与应用实践

1. 量子计算误差缓解技术概述 量子计算中的误差主要来源于量子比特与环境相互作用导致的退相干、量子门操作的不完美性以及测量误差。这些误差会随着量子电路深度的增加而累积&#xff0c;严重影响计算结果的可靠性。误差缓解技术旨在通过硬件和软件层面的方法&#xff0c;在不…...

逆向工程师的视角:如何用Windbg双机调试分析一个未知Windows驱动(实战案例解析)

逆向工程师的视角&#xff1a;如何用Windbg双机调试分析未知Windows驱动 在安全研究和恶意代码分析领域&#xff0c;逆向工程师常常需要面对未知的Windows驱动程序。这些驱动可能是第三方闭源组件&#xff0c;也可能是潜在的恶意软件载体。与传统的驱动开发调试不同&#xff0c…...