zoukankan      html  css  js  c++  java
  • P1443 马的遍历

      一开始没仔细审题被对齐卡了 = = 。。

    #include <bits/stdc++.h>
    #define MP make_pair
    #define PB push_back
    #define st first
    #define nd second
    #define rd third
    #define rg register
    #define FOR(i, a, b) for(int i =(a); i <=(b); ++i)
    #define RE(i, n) FOR(i, 1, n)
    #define FORD(i, a, b) for(int i = (a); i >= (b); --i)
    #define REP(i, n) for(int i = 0;i <(n); ++i)
    #define VAR(v, i) __typeof(i) v=(i)
    #define FORE(i, c) for(VAR(i, (c).begin()); i != (c).end(); ++i)
    #define ALL(x) (x).begin(), (x).end()
    #define SZ(x) ((int)(x).size())
    using namespace std;
    
    const int N = 712;
    int chess[N][N];
    void bfs(int n, int m, int x, int y)
    {
        queue<pair<int, int>> q;
        q.push(pair<int, int>(x, y));
        while (!q.empty())
        {
            pair<int, int> node = q.front(); q.pop();
            chess[node.first][node.second] += 1;
            if (node.first + 2 < n && node.second + 1 < m && chess[node.first + 2][node.second + 1] < 0)
            {
                chess[node.first + 2][node.second + 1] = chess[node.first][node.second];
                q.push(pair<int, int>(node.first + 2, node.second + 1));
            }
            if (node.first + 1 < n && node.second + 2 < m && chess[node.first + 1][node.second + 2] < 0)
            {
                chess[node.first + 1][node.second + 2] = chess[node.first][node.second];
                q.push(pair<int, int>(node.first + 1, node.second + 2));
            }
            if (node.first + 2 < n && node.second - 1 >= 0 && chess[node.first + 2][node.second - 1] < 0)
            {
                chess[node.first + 2][node.second - 1] = chess[node.first][node.second];
                q.push(pair<int, int>(node.first + 2, node.second - 1));
            }
            if (node.first + 1 < n && node.second - 2 >= 0 && chess[node.first + 1][node.second - 2] < 0)
            {
                chess[node.first + 1][node.second - 2] = chess[node.first][node.second];
                q.push(pair<int, int>(node.first + 1, node.second - 2));
            }
            if (node.first - 2 >= 0 && node.second + 1 < m && chess[node.first - 2][node.second + 1] < 0)
            {
                chess[node.first - 2][node.second + 1] = chess[node.first][node.second];
                q.push(pair<int, int>(node.first - 2, node.second + 1));
            }
            if (node.first - 1 >= 0 && node.second + 2 < m && chess[node.first - 1][node.second + 2] < 0)
            {
                chess[node.first - 1][node.second + 2] = chess[node.first][node.second];
                q.push(pair<int, int>(node.first - 1, node.second + 2));
            }
            if (node.first - 2 >= 0 && node.second - 1 >= 0 && chess[node.first - 2][node.second - 1] < 0)
            {
                chess[node.first - 2][node.second - 1] = chess[node.first][node.second];
                q.push(pair<int, int>(node.first - 2, node.second - 1));
            }
            if (node.first - 1 >= 0 && node.second - 2 >= 0 && chess[node.first - 1][node.second - 2] < 0)
            {
                chess[node.first - 1][node.second - 2] = chess[node.first][node.second];
                q.push(pair<int, int>(node.first - 1, node.second - 2));
            }
        }
    }
    int main()
    {
        int n, m, x, y;
        cin >> n >> m >> x >> y;
        REP(i, n) REP(j, m) chess[i][j] = -1;
        bfs(n, m, x - 1, y - 1);
        REP(i, n) {
            REP(j, m)
                printf("%-4d ", chess[i][j]);
            cout << endl;
        }
        return 0;
    }
    

      

  • 相关阅读:
    如何在外部获取当前A标签的ID值
    获取<a>标签值</a>的标签值及更改
    Mysql : Maximum execution time of 30 seconds exceeded
    Ajax+PHP实现的进度条--实例
    HTML控件 隐藏
    Ajax学习--理解 Ajax 及其工作原理
    XMLHttpRequest 对象属性参数参考
    七、smarty--缓存的控制
    六、smarty-缓存控制前的页面静态化原理
    Java 的 List 与 Scala 的 Seq 相互转换
  • 原文地址:https://www.cnblogs.com/darkchii/p/9678508.html
Copyright © 2011-2022 走看看