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

BFS 走迷宫

 

#include<bits/stdc++.h>
using namespace std;
int a[100][100],v[100][100];//访问数组  n,m<=100
struct point
{
	int x;
	int y;
	int step;
};
queue<point> r;//申请队列 
int dx[4]={0,1,0,-1};//四个方向 右下左上 
int dy[4]={1,0,-1,0};
int main()
{
/*
5 4
1 1 2 1
1 1 1 1
1 1 2 1
1 2 1 1
1 1 1 2
1 1 4 3
*/ 
	//输入
	int n,m,startx,starty,p,q;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			scanf("%d",&a[i][j]);
	
	scanf("%d%d%d%d",&startx,&starty,&p,&q); 
	//BFS
	point start;
	start.x=startx; 
	start.y=starty;
	start.step=0;
	r.push(start);//将起点入队
	v[startx][starty]=1;//已经访问
	int flag=0;
	while(!r.empty())
	{
		int x=r.front().x,y=r.front().y;
		if(x==p&&y==q)
		{
			flag=1;
			printf("%d",r.front().step);
			break;
		}
		for(int k=0;k<=3;k++)
		{
			int tx,ty;//四方向试探
			tx=x+dx[k];
			ty=y+dy[k];
			if(a[tx][ty]==1 &&v[tx][ty]==0)
			{
				//入队
				point temp;
				temp.x=tx;
				temp.y=ty;
				temp.step=r.front().step+1;
				r.push(temp);
				v[tx][ty]=1; 
			 } 
			 
		}
		r.pop();//拓展完了队首元素出队 
	}
	if(flag==0)
		printf("-1");
	 return 0;
}
	

相关文章:

  • 蓝桥杯之并查集
  • 滤波总结 波形处理原理 如何对一个规律的波形进行滤波 显现出真正的波形 如何设计滤波
  • Visionpro 液位高度检测
  • Sentinel 持久化配置
  • LeetCode刷题第6题【Z 字形变换】---解题思路及源码注释
  • 哈希表-四数之和
  • ceph部署-14版本(nautilus)-使用ceph-ansible部署实验记录
  • 常用架构图:业务架构、产品架构、系统架构、数据架构、技术架构、应用架构、功能架构及信息架构
  • java 通过阿里物联网平台推送数据到显示屏
  • 【办公类-90-01】】20250213周计划四类活动的写法(分散运动、户外游戏、个别化(美工室图书吧探索室))
  • Spring Boot 的约定优于配置,你的理解是什么?
  • Spreadjs与GcExcel
  • 如何使用 HPjtune 分析 Java GC 日志并优化 JVM 性能
  • JS的map方法和Map对象
  • 自己搭建可以和deepseek对话的WEB应用
  • Cursor AI开发微信小程序教程
  • DeepSeek崛起:中国AI产业的颠覆者与重构者
  • vue学习笔记10
  • html+css设计情人节网页制作主页页面
  • Tree Search for Web Agents
  • 最快网站备案/seo优化网站
  • 360免费网站建设/厦门人才网597人才网
  • 网络系统管理属于哪类专业/关键词seo排名怎么做的
  • 浦东网站开发培训/云浮seo
  • 学校网站建设模板/优化关键词具体要怎么做
  • 旅游网页设计模板下载/系统优化软件推荐