zoukankan      html  css  js  c++  java
  • hdu 1372 简单广度优先搜索

    这题跟北大1915题很像,怀疑是从北大抄过来的……

    #include <cstdio>
    #include
    <cstring>
    #include
    <queue>
    using namespace std;
    #define MAXL 20
    typedef
    struct {
    int x;
    int y;
    int step;
    } MyPoint;
    MyPoint start;
    int endx, endy, L = 8;
    bool visited[MAXL][MAXL];
    int move[8][2] = { { 2, 1 }, { 2, -1 }, { -2, 1 }, { -2, -1 }, { 1, 2 },
    {
    1, -2 }, { -1, 2 }, { -1, -2 } };
    int BFS() {
    int i;
    queue
    <MyPoint> Q;
    Q.push(start);
    memset(visited,
    0, sizeof(visited));
    visited[start.x][start.y]
    = true;
    MyPoint cur, temp;
    while (!Q.empty()) {
    cur
    = Q.front();
    Q.pop();
    if (cur.x == endx && cur.y == endy) {
    return cur.step;
    }
    temp.step
    = cur.step + 1;
    for (i = 0; i < 8; i++) {
    temp.x
    = cur.x + move[i][0];
    temp.y
    = cur.y + move[i][1];
    if (visited[temp.x][temp.y]) {
    continue;
    }
    if (temp.x >= 0 && temp.x < L && temp.y < L && temp.y >= 0) {
    visited[temp.x][temp.y]
    = true;
    Q.push(temp);
    }
    }
    }
    return -1;
    }
    void work() {
    char c1, c2;
    int a, b, ans;
    while (scanf("%c%d %c%d", &c1, &a, &c2, &b) == 4) {
    start.x
    = a - 1;
    start.y
    = c1 - 'a';
    endx
    = b - 1;
    endy
    = c2 - 'a';
    start.step
    = 0;
    ans
    = BFS();
    printf(
    "To get from %c%d to %c%d takes %d", c1, a, c2, b, ans);
    puts(
    " knight moves.");
    getchar();
    }
    }
    int main() {
    #ifndef ONLINE_JUDGE
    freopen(
    "data.in", "r", stdin);
    #endif
    work();
    return 0;
    }
  • 相关阅读:
    SQL补充
    SQL练习题
    HDU 2907
    Codeforces 814D
    Codeforces 814C
    Codeforces 1004D
    Codeforces 1004E
    CodeForces 909F
    CodeForces 909E
    CodeForces 909D
  • 原文地址:https://www.cnblogs.com/moonbay/p/2115044.html
Copyright © 2011-2022 走看看