首页 > 其他分享 >BFS(广度优先搜索)

BFS(广度优先搜索)

时间:2023-05-18 19:56:01浏览次数:30  
标签:优先 temp tx ty int BFS start step 广度

代码:

#include<bits/stdc++.h>
using namespace std;
int a[100][100],v[100][100];// a为地图,v为记录是否访问
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()
{ int n,m,startx,starty,p,q;
  cin>>n>>m;// n,m为地图长宽
  for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
      cin>>a[i][j];// 填充地图
  cin>>startx>>starty>>p>>q;
  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;
      cout<<r.front().step;
      break;
    }
    for(int k=0;k<=3;k++){// 遍历4个方向
      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){
  cout<<"no answer!"<<endl;
}
return 0;
}

//测试样例: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

标签:优先,temp,tx,ty,int,BFS,start,step,广度
From: https://www.cnblogs.com/bzlx1717/p/17413109.html

相关文章

  • AMD Xilinx AXI Interrupt Controller 中断优先级
    中断优先级AXIInterruptController支持中断优先级。在VivadoBlockDesign中,bit-0连接的中断优先级最高,越靠近bit-0的中断优先级最高。AXIInterruptController的手册pg099中的描述如下:Prioritybetweeninterruptrequestsisdeterminedbyvectorposition.Theleas......
  • 使用优先队列寻找中位数
    Next,SupposewewouldliketoinventanewADTcalledMedianFinderwhichisacollectionofintegersandsupportsfindingthemedianofthecollection.MedianFinderadd(x);//addsxtothecollectionofnumbersmedian();//returnsthemedianfromacol......
  • c++ class类bfs模板题目
    题目网址:走迷宫-题目-Liuser'sOJ(cpolar.cn)原本代码(bfs广度优先搜索):#include<bits/stdc++.h>usingnamespacestd;constintN=50;intn,m;intsx,sy;chara[N][N];intb[N][N];boolvis[N][N];intdx[]={1,0,-1,0};intdy[]={0,-1,0,1};structnode{i......
  • 就业内推 | 上市公司招高级网工,HCIE/CCIE证书优先,最高35k
    01中软国际招聘岗位:中高级网络工程师职责描述:1、负责华为数通产品(交换机、路由器、WLAN)、安全产品(防火墙、入侵检测、AntiDDoS硬件设备等)项目售后实施,主要包括设备版本补丁升级、设备安装调测、业务割接上线、项目验收等;2、负责客户网络故障维护处理,设备巡检,版本整改等工作;3、负责......
  • 5、栈、队列、优先队列
    内容来自刘宇波老师玩转算法面试1、栈的基础应用20-有效的括号publicstaticbooleanisValid(Strings){Stack<Character>stack=newStack<>();char[]chars=s.toCharArray();for(charc:chars){if(c=='('||c=='{'|......
  • 优先级定义
    级别说明条件P0最高的优先级,需要能够停下其他工作立马去完成的工作需要非常谨慎地确定这个优先级,如非必要,尽量不使用,严格预防通货膨胀P1较高的优先级,优先完成在必要时给定当前优先级P1.5正常的优先级一般设定为P1.5P2较低的优先级,可以延期、拖后完成-......
  • SpringBoot 配置文件加载优先级
    我们在使用springboot开发的时候,经常会从外部获取属性值,为了记住这些规则,特此做如下记录~~~一、为什么要做外部化配置本地开发的时候,上传文件的时候,每个人想上传的路径不一样,使用外部配置,就可以单独设置自己的上传路径项目部署的时候,不同的环境使用不同的配置,使用外部挂载配置这......
  • Maven 仓库优先加载本地的仓库jar包配置,清理无法下载的jar
    Settings-Maven-Runner-VMOptions中添加-DarchetypeCatalog=internal,优先从本地仓库读取,添加-Dmaven.wagon.http.ssl.insecure=true-Dmaven.wagon.http.ssl.allowall=true,忽略证书检查https://www.jb51.net/article/276265.htm清理本地没下载完的https://www.jb51.......
  • 【算法基础】DFS深度优先算法 —— AcWing 843. n-皇后问题 AcWing 842. 排列数字
    n-皇后问题是一个经典的dfs深度优先遍历的题目,在题解这一题之前,将由浅入深,先讲解一个n-皇后问题的母题。-------AcWing842.排列数字 [AcWing842].排列数字题目概述给定一个整数 n,将数字 1∼n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格......
  • Hadoop之HDFS的API操作文件的上传下载参数的优先级
    Hadoop之HDFS的API操作文件的上传下载参数的优先级packagecom.itnihao.hdfs;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importorg.junit.After;importorg.junit.Before;importorg.jun......