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

Acwing.提高课.迷宫问题(c++题解)

给定一个 n×n 的二维数组,如下所示:

int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};

它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

数据保证至少存在一条从左上角走到右下角的路径。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含 n 个整数 0 或 1,表示迷宫。

输出格式

输出从左上角到右下角的最短路线,如果答案不唯一,输出任意一条路径均可。

按顺序,每行输出一个路径中经过的单元格的坐标,左上角坐标为 (0,0),右下角坐标为 (n−1,n−1)。

数据范围

0≤n≤1000

输入样例:
5
0 1 0 0 0
0 1 0 1 0
0 0 0 0 0
0 1 1 1 0
0 0 0 1 0
输出样例:
0 0
1 0
2 0
2 1
2 2
2 3
2 4
3 4
4 4

_____________________________________________________________________________

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

_____________________________________________________________________________

#include <bits/stdc++.h>
#define xx first
#define yy second
using namespace std;
typedef pair<int, int> PII;
const int N = 1005;int n;
bool G[N][N];
bool f[N][N];int fx[] = {0, 0, 1, -1};
int fy[] = {1, -1, 0, 0};void bfs(int x, int y, int q, int p){PII pre[N][N];queue<PII> Q;Q.push({x, y});pre[x][y] = {x - 1, y - 1};f[x][y] = true;while(!Q.empty()){auto t = Q.front();Q.pop();if(t.xx == q && t.yy == p)break;for(int i = 0; i < 4; i ++){int dx = t.xx + fx[i];int dy = t.yy + fy[i];if(dx < 1 || dy < 1 || dx > n || dy > n)continue;if(f[dx][dy])continue;if(G[dx][dy])continue;Q.push({dx, dy});f[dx][dy] = true;pre[dx][dy] = t;}}stack<PII> st;PII t = {q, p};while(pre[t.xx][t.yy] != t){st.push({t});t = pre[t.xx][t.yy];}while(!st.empty()){t = st.top();st.pop();cout << t.xx - 1 << " " << t.yy - 1 <<"\n";//本题从(0,0)开始}
}int main(){cin >> n;for(int i = 1; i <= n; i ++)for(int j = 1; j <= n; j ++)cin >> G[i][j];bfs(1, 1, n, n);
}

 

http://www.xdnf.cn/news/3692.html

相关文章:

  • CUDA Error: the provided PTX was compiled with an unsupported toolchain
  • JGQ111活性炭吸附气体中二氧化硫实验装置(全不锈钢、带活性炭再生)
  • 【多线程】七、POSIX信号量 环形队列的生产者消费者模型
  • 第 13 届蓝桥杯 C++ 青少组省赛中 / 高级组 2022 年真题(选择题)
  • 结合强化学习RL和SFT各自训练优势,让模型边学边练,从而平衡Zero-RL训练中的模仿和探索!!
  • Python Cookbook-6.17 NuIl对象设计模式的实现
  • PyTorch_张量元素类型转换
  • MySQL索引和事务
  • 接口测试的核心思维(基础篇)
  • Java 中如何实现自定义类加载器,应用场景是什么?
  • 如何快速有效学习数字社会学AI社会学,抓住网络社会学知识图谱,数字社会学50个核心概念
  • Hal库下备份寄存器
  • 字母异位词分组(中等)
  • 继承【Java版】详细讲解
  • 虚幻引擎入门笔记
  • 山东大学计算机组成与设计第七章习题解析
  • Nginx — 防盗链配置
  • 深度学习核心架构:探明四种基础神经网络
  • 从基础到实践(三十六):RTC时钟芯片的应用
  • 多线程系列三:这就是线程的状态?
  • 什么是生成式 AI (GenAI)?
  • 强化学习--2.数学
  • 摩尔缠论课程合集完整版核心课程前置课程圈子问答星球圈子摩尔缠论三个阶段
  • redis延时队列详细介绍
  • Dart和Go语言特征对比
  • 接上篇,解决FramePack启动报错:“httpx.ReadError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。“的问题
  • 关于项目中优化使用ConcurrentHashMap来存储锁对象
  • 【C语言练习】019. 使用结构体数组存储复杂数据
  • 【unity游戏开发入门到精通——UGUI】整体控制一个UGUI面板的淡入淡出——CanvasGroup画布组组件的使用
  • 基于D-Mixer与TransXNet的YOLOv8改进—融合全局-局部特征与空间降维注意力机制的CNN-ViT混合架构