<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont

本文涉及的产品
转发路由器TR,750小时连接 100GB跨地域
简介: 对于上一个迷宫的问题也可使用广度优先搜索(Breadth First Search,BFS),也称作宽度优先搜索。深度优先搜索的方法是一直搜索下去,直到走不通,再回到原地。
  • 对于上一个迷宫的问题也可使用广度优先搜索(Breadth First Search,BFS),也称作宽度优先搜索。
  • 深度优先搜索的方法是一直搜索下去,直到走不通,再回到原地。而广度优先搜索是是“一层一层”的扩展进行搜索。最开始假设还是(1,1)处,一步可以到达的点有(1,2)和(2,1)
  • 但是还没有找到目标,继续通过这两个(1,2)、(2,1)点往下走。之后,他能走到哪个点呢?(2,2),通过(2,1)还可以到(3,1),并且都是用2步,这里依然需要使用数组进行标记这个点是否走过。
  • 然后依次类推继续搜索;
  • 在上面的过程中,需要使用个结构体实现队列,
 struct note{
      int x;
      int y;
      int s;//记录步数 
}


- 从(1,1)开始,先尝试往右走到了(1,2),对其进行判断是否越界或为障碍物或已经走过(使用前边介绍的book数组标记)。

-从(1,1)也可以到达(2,1)。

- 出队时使用head++就可以啦!;

- 代码:

 #include<iostream>
using namespace std;
int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
struct note{
    int x;
    int y;
    int f;
    int s;
};
int main(){
struct note que[2501];
    int head,tail;
     int sx,sy,tx,ty,q,p,m,n,flag;
    int a[51][51]={0};
    int book[51][51]={0};
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    cin>>sx>>sy>>p>>q;
    head=1;
    tail=1;
    que[tail].x=1;
    que[tail].y=1;
    que[tail].s=0;
    tail++;
    book[sx][sy]=1;
    flag=0;
    while(head<tail){
        for(int k=0;k<=3;k++){
            tx=que[head].x+next[k][0];
            ty=que[head].y+next[k][1];
            if(tx<1||ty<1||tx>n||ty>m)
                continue;
            if(a[tx][ty]==0&&book[tx][ty]==0){
                book[tx][ty]=1;
                que[tail].x=tx;
                que[tail].y=ty;
                que[tail].f=head;
                que[tail].s=que[head].s+1;
                tail++;
            }
            if(tx==p&&ty==q){
                flag=1;
                break;
            }
        }
        if(flag)
            break;
        head++;
    }
    cout<<que[tail-1].s<<endl;
    return 0;
}


  • 测试数据:

5  4
0   0    1   0
0   0    0   0
0   0    1   0 
0   1    0   0
0   0    0   1
1   1    4   3     
  • 运行结果:

    7

  • 目录
    相关文章
    |
    Web App开发
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
    TCP洪水攻击(SYN Flood)的诊断和处理 Posted by  海涛  on 2013 年 7 月 11 日 Tweet1 ​1. SYN Flood介绍 前段时间网站被攻击多次,其中最猛烈的就是TCP洪水攻击,即SYN Flood。
    1008 0
    |
    Web App开发 前端开发
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
    异步通信 对于BS(Browser-Server 浏览器)架构,很多情景下server的处理时间较长。 如果浏览器发送请求后,保持跟server的连接,等待server响应,那么一方面会对用户的体验有负面影响; 另一方面,很有可能会由于超时,提示用户服务请求失败。
    771 0
    |
    Web App开发 前端开发 Java
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
    ZooKeeper 保证了数据的强一致性,  zk集群中任意节点(一个zkServer)上的相同znode下的数据一定是相同的。
    806 0
    |
    Java Apache
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
    hbase从集群中有8台regionserver服务器,已稳定运行了5个多月,8月15号,发现集群中4个datanode进程死了,经查原因是内存 outofMemory了(因为这几台机器上部署了spark,给spark开的...
    813 0
    |
    Web App开发 前端开发
    |
    Web App开发 大数据
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
                                                                                   1.
    1732 0
    |
    Web App开发 前端开发 Java
    |
    Web App开发 前端开发 算法
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
    import java.util.LinkedHashMap;import java.util.Map; /** * LRU (Least Recently Used)  */public class LRUCache e...
    635 0
    |
    Web App开发 前端开发
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
    如何获取设备特征码、版本号、激活码?方式一 第一步:打开凯立德移动导航系统,进入地图界面,点击“查找”第二步:在查找页面以“快拼”的输入方式下,输入“AAAAAA”(6个A)
    982 0
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
    概述 HDFS中的集中化缓存管理是一个明确的缓存机制,它允许用户指定要缓存的HDFS路径。NameNode会和保存着所需快数据的所有DataNode通信,并指导他们把块数据缓存在off-heap缓存中。
    710 0