Knight Moves(UVA 439)

网址如下:

Knight Moves - UVA 439 - Virtual Judge (vjudge.net)

(第三方网站)

一道简单的bfs题

没啥好说的

没想到我一边听着经济学一边写代码

代码如下:

#include<cstdio>
#include<queue>
struct Loc{
    int c, r, step;
    Loc(int c, int r, int step):c(c), r(r), step(step){}
    bool operator==(const Loc &v) const{return (c == v.c && r == v.r);}
};
Loc st(0, 0, 0), dt(0, 0, 0);
char s1[3], s2[3];

void bfs(void)
{
    std::queue<Loc> q; q.push(st);
    while(!q.empty()){
        Loc u = q.front(); q.pop();
        if(u.c < 1 || u.c > 8 || u.r < 1 || u.r > 8) continue;
        if(u == dt){printf("To get from %s to %s takes %d knight moves.\n", s1, s2, u.step); break;}
        q.push(Loc(u.c + 2, u.r + 1, u.step + 1)); q.push(Loc(u.c + 1, u.r + 2, u.step + 1));
        q.push(Loc(u.c + 2, u.r - 1, u.step + 1)); q.push(Loc(u.c + 1, u.r - 2, u.step + 1));
        q.push(Loc(u.c - 2, u.r + 1, u.step + 1)); q.push(Loc(u.c - 1, u.r + 2, u.step + 1));
        q.push(Loc(u.c - 2, u.r - 1, u.step + 1)); q.push(Loc(u.c - 1, u.r - 2, u.step + 1));
    }
}

int main(void)
{
    while(scanf("%s%s", s1, s2) == 2){
        st.c = s1[0] - 'a' + 1; st.r = s1[1] - '0'; st.step = 0;
        dt.c = s2[0] - 'a' + 1; dt.r = s2[1] - '0'; dt.step = 0;
        bfs();
    }
    return 0;
}

实际上这个代码中,对于骑士移动的那个的处理,可以写一个函数,使代码更加简洁,而且不容易写错

相关推荐

  1. 439 - Knight Moves (UVA)

    2024-03-27 10:42:03       71 阅读
  2. Knight Moves(UVA 439

    2024-03-27 10:42:03       48 阅读
  3. AFM 433

    2024-03-27 10:42:03       33 阅读
  4. trino-435:dynamic catalog

    2024-03-27 10:42:03       56 阅读
  5. leetcode 437 路径总和

    2024-03-27 10:42:03       58 阅读
  6. UVA489 - Hangman Judge

    2024-03-27 10:42:03       37 阅读
  7. 435. 无重叠区间

    2024-03-27 10:42:03       42 阅读
  8. misc<span style='color:red;'>49</span>

    misc49

    2024-03-27 10:42:03      44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 10:42:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 10:42:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 10:42:03       87 阅读
  4. Python语言-面向对象

    2024-03-27 10:42:03       96 阅读

热门阅读

  1. 4.4 call far ptr和retf指令,本质是栈、goto指令

    2024-03-27 10:42:03       39 阅读
  2. Hive的安装

    2024-03-27 10:42:03       46 阅读
  3. unity pivot和center的区别

    2024-03-27 10:42:03       55 阅读
  4. 在OpenCV的detectMultiScale方法中,scaleFactor参数

    2024-03-27 10:42:03       40 阅读
  5. VR虚拟仿真在线模拟旅游专业情景

    2024-03-27 10:42:03       46 阅读
  6. 一些常见的Ansible问题和答案

    2024-03-27 10:42:03       40 阅读
  7. 防火墙技术

    2024-03-27 10:42:03       39 阅读
  8. 使用SqlDataAdapter和DataSet维护数据库表数据

    2024-03-27 10:42:03       35 阅读
  9. Ansible剧本playbooks详解

    2024-03-27 10:42:03       35 阅读
  10. C语言学习笔记day13

    2024-03-27 10:42:03       38 阅读