• 洛谷 p1443


    就是马走‘日’字形,然后输出到各个位置的最短路径,走不到就输出-1

    直接用BFS搜索即可求解,但是输出方面有点问题,我一开始用printf("%-5d)全部WA,结果改成cout<<left<<setw(5);又能AC

    不知道是什么问题,题解里面也有人用printf

    #include<bits/stdc++.h>
    
    using namespace std;
    
    typedef long long ll;
    typedef unsigned long long ull;
    
    const int INF = -1;
    int n, m;
    int sx, sy;
    int maze[500][500];
    int d[500][500];
    int dx[8] = {-1, -2, -2, -1, 1, 2, 2, 1}, dy[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
    
    void bfs(int x, int y){
      queue< pair<int, int> > q;
      q.push( pair<int, int>(x, y) );
      d[x][y] = 0;
    
      while( !q.empty() ){
        pair<int, int> t = q.front(); q.pop();
    
        for(int i=0; i<8; i++){
          int nx = t.first + dx[i];
          int ny = t.second + dy[i];
    
          if(nx >= 0 && nx < n && ny >= 0 && ny < m && d[nx][ny] == INF){
            d[nx][ny] = d[t.first][t.second] + 1;
            q.push( pair<int, int>(nx, ny) );
          }
    
        }
      }
    }
    
    int main(){
      ios::sync_with_stdio(false);
    
      cin >> n >> m >> sx >> sy;
      memset(d, INF, sizeof d);
    
      bfs(sx-1, sy-1);
    
      for(int i=0; i<n; i++){
        for(int j=0; j<m; j++)
          cout<<left<<setw(5)<<d[i][j];
        cout << endl;
      }
      return 0;
    }
  • 相关阅读:
    tp5 入口文件访问优化
    tp5 方法控制器的调用
    PT5目录框架1
    0621JQuery函数事件
    0621 JQuery弹窗
    0621 JQuery三级联动
    PHP基础重点---高级查询0604
    SQL练习0603
    PHP重点3---表中简单查询、增删改
    wamp中MySQL控制台的基本操作
  • 原文地址:https://www.cnblogs.com/ssNiper/p/11265589.html
Copyright © 2020-2023  润新知