首页 > 其他分享 >迷宫1

迷宫1

时间:2023-03-24 15:55:51浏览次数:38  
标签:ny int 迷宫 nx vis ey path

bfs 最短路径有几条

题意


样例输入:
4
...S
.XX.
.XX.
E...
样例输出:
6
2
数据范围:
1 ≤n ≤ 25

解析

path数组记录点

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 30;
const int inf = 0x3f3f3f3f; 
char a[N][N];
int n,sx,sy,ex,ey;
int vis[N][N],path[N][N];
int dx[4] = {-1,0,1,0};
int dy[4] = {0,1,0,-1};
struct node{
	int x,y;
};
queue<node> q;
void bfs(){
	vis[sx][sy] = 0;
	path[sx][sy] = 1;
	q.push({sx,sy});
	while(q.size()){
		node t = q.front();
		q.pop();
		if(t.x == ex && t.y == ey) return;//
		for(int i=0;i<4;i++){
			int nx = t.x + dx[i];
			int ny = t.y + dy[i];
			if(nx < 1 || nx > n || ny < 1 || ny > n) continue;
			if(a[nx][ny] == 'X') continue;
			if(vis[nx][ny] != inf){
				path[nx][ny] += path[t.x][t.y];
				continue;
			}
			vis[nx][ny] = vis[t.x][t.y] + 1;
			path[nx][ny] = path[t.x][t.y];
			q.push({nx,ny});
		} 
	}
}

int main(){
	cin >> n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin >> a[i][j];
			if(a[i][j] == 'S') sx = i,sy = j;
			if(a[i][j] == 'E') ex = i,ey = j;
		}
		
	}
	memset(vis,0x3f,sizeof vis);
	bfs();
	printf("%d\n%d",vis[ex][ey],path[ex][ey]);
	return 0;
} 

标签:ny,int,迷宫,nx,vis,ey,path
From: https://www.cnblogs.com/dtdbm/p/17252255.html

相关文章

  • 蓝桥杯之迷宫
    蓝桥杯题解迷宫下图给出了一个迷宫的平面图,其中标记为11的为障碍,标记为00的为可以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷......
  • 迷宫
    迷宫-蓝桥云课(lanqiao.cn)publicclassN602{ staticchar[][]m=newchar[30][50]; staticchar[]d={'D','L','R','U'};//定义这个顺序为字典序答案就......
  • 迷宫问题之bfs
    先来一道简单的迷宫模板题迷宫由n行m列的单元格组成,每个单元格要么是空地,要么是障碍物。其中1表示空地,可以走通,2表示障碍物。输出从左上角到右下角的最短路径长度。......
  • bfs走迷宫
      #include<iostream>#include<cstring>#include<queue>constintN=110;intn,m;typedefpair<int,int>PII;intg[N][N];//存图intd[N][N];//记录距离PIIq......
  • 基于形态学处理算法的迷宫路线搜索matlab仿真
    1.算法描述形态学是图像处理中应用最为广泛的技术之一,主要用于从图像中提取对表达和描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为本质的形状特征,如......
  • 基于形态学处理算法的迷宫路线搜索matlab仿真
    1.算法描述       形态学是图像处理中应用最为广泛的技术之一,主要用于从图像中提取对表达和描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为本......
  • 迷宫问题
    (啊哈哈哈鸡汤来咯)设有一个N×N(2<=N<=10)方格的迷宫,入口和出口分别在左上角和右上角。迷宫格子中分别放0和1,0表示可通,1表示不能,入口和出口处肯定是0.迷宫走的规则如下所......
  • dfs入门,一个简单的迷宫问题
    AcWing走迷宫问题给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1......
  • 迷宫危机“分支语句”
    今日份学习“分支语句”本文简介:该篇文章介绍分支语句,主要讲解其用法和注意事项,让我们使用该语句上有更好的概念(不再犯选择困难症......
  • AC.844 走迷宫
     #include<iostream>#include<queue>#include<utility>//pair容器的头文件#include<cstring>//memsetusingnamespacestd;constintN=1e2+7;intn,m;intg[......