• 迷宫最短路径 问题


    /*
    迷宫最短路径 问题 
    */
    #include<iostream>
    #include<queue>
    #include<cstring>
    using namespace std;
    struct Node{
      int x, y;
      Node(int x,int y) {
        this->x = x;
        this->y = y;
      }
    };
    const int N = 15;
    int map[9][9]= {1,1,1,1,1,1,1,1,1,
    1,0,0,1,0,0,1,0,1,
    1,0,0,1,1,0,0,0,1,
    1,0,1,0,1,1,0,1,1,
    1,0,0,0,0,1,0,0,1,
    1,1,0,1,0,1,0,0,1,
    1,1,0,1,0,1,0,0,1,
    1,1,0,1,0,0,0,0,1,
    1,1,1,1,1,1,1,1,1};
    int d[N][N], book[N][N];
    int next[][2] = {{-1,0},{0,1},{1,0},{0,-1}};
    int endx, endy;
    int n, m;
    void bfs(int x,int y) ;
    int main() {
        int beginx, beginy;
        while (cin >> beginx >> beginy) {
          cin>> endx >> endy;
          memset(book,0,sizeof(book));
          memset(d,0,sizeof(d)); 
        n = 8, m = 8;
          bfs(beginx,beginy);
          cout << d[endx][endy] << endl;
      }
    }
    void bfs(int x,int y) {
      queue<Node> p;
      Node q(x,y);
      p.push(q);
      d[x][y] = 0;
      book[x][y] = 1;
      while (!p.empty()) {
        q = p.front();
        p.pop();
        if (q.x == endx && q.y == endy) return ;
        int v, u;
        for (int i = 0; i < 4; i++) {
          v = q.x + next[i][0];
          u = q.y + next[i][1];
          if (v >= 0 && v <= n && u >= 0 && u <= m && book[v][u] == 0 && map[v][u] == 0) {
            book[v][u] = 1;
            d[v][u] = d[q.x][q.y] + 1;
    //        q = Node(v,u);
            p.push(Node(v,u));
          }
        }
      }
      return ;
    }
  • 相关阅读:
    使用requests爬虫简单获取知乎问题信息
    slam介绍
    move_base 控制机器人(2)
    move_base 控制机器人(1)
    Linux 常用命令-touch
    Linux 常用命令-rmdir
    Linux 常用命令-rm
    Linux 常用命令-mkdir
    Linux 目录结构
    Linux 常用命令-pwd
  • 原文地址:https://www.cnblogs.com/dream-it-possible/p/7798271.html
Copyright © 2020-2023  润新知