zoukankan      html  css  js  c++  java
  • 迷宫最短路径 问题

    /*
    迷宫最短路径 问题 
    */
    #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 ;
    }
  • 相关阅读:
    SQL之merge into(转)
    SQL Server 中的 NOLOCK 到底是什么意思?
    SSIS之数据流任务
    SSIS之序列容器
    SSIS的控制流之Foreach循环容器和序列容器
    SSIS的控制流之For循环容器
    SSIS包的组建之连接管理器
    SSIS包的开发
    SSIS简介
    ODBC、OLE DB、 ADO的区别
  • 原文地址:https://www.cnblogs.com/dream-it-possible/p/7798271.html
Copyright © 2011-2022 走看看