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;
    }
    

      

  • 相关阅读:
    Oracle创建自增字段方法-ORACLE SEQUENCE的简介
    iOS项目开发实战——使用Xcode6设计自己定义控件与图形
    准备开源用javascript写Tomcat下的WebApp的项目
    Codeforces Round #256 (Div. 2) B. Suffix Structures
    静默方式安装10g数据库软件+升级patch+手工建库
    oracle 数据库开发面试题
    待机异常篇
    HTTP状态码(HTTP Status Code)
    POJ3126——Prime Path
    RHEL7 -- 通过gerp使用正则表达式
  • 原文地址:https://www.cnblogs.com/darkchii/p/9678508.html
Copyright © 2011-2022 走看看