走迷宫C++

该博客探讨了如何使用C++解决迷宫路径问题,从左上角到右下角找出最短的行走步数。迷宫由R行C列组成,包含障碍物和空地,只能水平或垂直移动。博客提供了输入输出描述以及一个样例解答,显示了在给定迷宫中,从起点到终点最少需要9步。
摘要由CSDN通过智能技术生成

题目描述

一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。

输入描述

第一行是两个整数,R和C,代表迷宫的长和宽。( 1<= R,C <= 40)接下来是R行,每行C个字符,代表整个迷宫。空地格子用'.'表示,有障碍物的格子用'#'表示。迷宫左上角和右下角都是'.'。

输出描述

输出从左上角走到右下角至少要经过多少步(即至少要经过多少个空地格子)。计算步数要包括起点和终点。

样例1

输入复制

5 5 ..### #.... #.#.# #.#.# #.#..

输出

9

#include <bits/stdc++.h>
using namespace std;
int n, m, sr, sc, dr, dc;
int dis[1005][1005], path[1005][1005], cnt;
char a[1005][1005];
const int dx[] = {1, 0, -1, 0}, dy[] = {0, 1, 0, -1};

void bfs(){
  queue <int> qx, qy;
  memset(dis, 0x3f, sizeof(dis));
  qx.push(sr);
  qy.push(sc);
  dis[sr][sc] = 1;
  path[sr][sc] = 1;
  while(!qx.empty()){
    i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值