首页 > 其他分享 >#P1033. 迷宫问题

#P1033. 迷宫问题

时间:2023-11-25 20:22:36浏览次数:31  
标签:node sy sx 20 P1033 迷宫 问题 int mp

题意是:

给你一个迷宫,起点为S,终点为T,.表示空格,#表示障碍物无法通过,你每次可以从当前位置上下左右移动(不能出界或者撞到障碍物上)你需要找出从起点到终点的最少步数,如果不存在解,输出-1。

BFS的练手题

using namespace std;
int sx,sy,ex,ey;
int n,m;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
char mp[20][20];
int vis[20][20];
struct node{;
	int x,y,t;
	node(){};
	node(int a,int b,int c){
		x=a;
		y=b;
		t=c;
	}
};
bool BFS(){
    queue<node>q;
	q.push(node(sx,sy,0));
	vis[sx][sy]=1;
	while(q.size()){
		node u=q.front();
		q.pop();
		int x=u.x;
		int y=u.y;
		if(x==ex&&y==ey){
			cout<<u.t;
			return true;
		}
		for(int i=0;i<4;i++){
			int nx=x+dx[i];
			int ny=y+dy[i];
			if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&vis[nx][ny]==0&&mp[nx][ny]!='#'){
				vis[nx][ny]=1;
				q.push(node(nx,ny,u.t+1));
			}
		}
	}
	return false;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>mp[i][j];
			if(mp[i][j]=='S'){
				sx=i;
				sy=j;
			}
			if(mp[i][j]=='T'){
				ex=i;
				ey=j;
			}
		}
	}
	if(!BFS()){
		cout<<-1;
	}
	return 0;
} 

标签:node,sy,sx,20,P1033,迷宫,问题,int,mp
From: https://www.cnblogs.com/yufan1102/p/17856022.html

相关文章

  • 中伟视界:AI盒子智能分析算法解决油气管道长无人场景下的人车监测问题
        在油气管道长又无人的场景下,人和车的监测问题一直是一个难题。传统的监测手段往往存在盲区和误报问题,给管道运行安全带来了一定的隐患。然而,随着人工智能技术的不断发展,利用AI盒子的智能分析算法可以有效解决这一问题。AI盒子可以通过视频监控系统实时检测管道周边的人......
  • Java 中如何解决跨域问题
    文章目录背景一、什么是跨域?为什么会出现跨域二、Java实现跨域方式2.1、返回新的CorsFilter(全局跨域)2.2、重写WebMvcConfigurer(全局跨域)2.3、使用注解(aa局部跨域)2.4、手动设置响应头(局部跨域)2.5、使用自定义filter实现跨域2.6、SpringCloudGateway跨域配......
  • 项目启动遇到的问题
    java:无法访问org.springframework.boot.SpringApplication错误的类文件:/D:/Repository/org/springframework/boot/spring-boot/3.0.5/spring-boot-3.0.5.jar!/org/springframework/boot/SpringApplication.class类文件具有错误的版本61.0,应为52.0请删除该文件......
  • set集合的线程安全问题
    一、HashSetHashSet是基于HashMap实现的,因为HashMap本身是线程不安全的,所以HashMap就是线程不安全的,简单看下HashSet的源码publicclassHashSet<E>extendsAbstractSet<E>implementsSet<E>,Cloneable,java.io.Serializable{staticfinallongserialVersio......
  • ubuntu开发之权限问题
    问题:ubuntu图像显示的工程中,执行生成的文件后,图像没有显示。解决:权限问题,更改权限成功。(单个文件更改权限)sudochmod777*//代表对这个文件赋予最高权限成功显示:补充:文件夹更改权限【一般显示带锁状态】如果采取上面的单个文件更改权限,虽然本文件解锁了,但是内部的其他文件不会......
  • list集合的线程安全问题分析
    一、ArrayList先说结论,ArrayList是线程不安全的。至于为什么需要去了解它的实现原理,来看下它的源码。首先ArrayList是基于数据实现的,分析它的线程安全问题需要看下add方法publicclassArrayList<E>extendsAbstractList<E>implementsList<E>,RandomAccess,Clone......
  • 解决Gradle下载太慢的问题
    解决Gradle下载太慢的问题2023年11月15日14:1362浏览 · 0喜欢 · 0评论七彩叶1A粉丝:425文章:3关注 留着自用镜像源:https://mirrors.cloud.tencent.com/gradle/选择对应版本下载链接,替换修改gradle-wrapper.properties中的distributionUrl即可。......
  • # yyds干货盘点 # 盘点一个Pandas处理Excel表格实战问题(下篇)
    大家好,我是皮皮。一、前言继续接着上一篇文章说,这一篇文章我们一起来看看大佬们的解决办法。二、实现过程这里【郑煜哲·Xiaopang】和【瑜亮老师】给了一个提示,如下图所示:后来【隔壁......
  • traccar自动升级带来的问题
    traccar启动时会自动升级:首先会去锁定一个叫:DATABASECHANGELOGLOCK的表,当升级未完成或出问题时,traccar不会自动释放这张表的锁,导致traccar不会进行正常状态,查看log会不停出现:Waitingforchangeloglock参照https://www.traccar.org/forums/topic/liquibase-waiting-for-changel......
  • 什么是跨域问题及处理方案?
    什么是跨域问题?举个例子:你请求地址http:1.2.3.4:8080/index.html,浏览器成功获取,然后你在index.html页面点击某个按钮发送ajax请求http:5.6.7.8:8080/getUserInfo,请求能成功发送,服务器也成功响应,但是浏览器不认账,浏览器会认为你的响应数据不安全,于是报错终止后面代码的运行,这就......