这题和poj 1915一样,用bfs做走马步。现在再看当时的代码,真是好幼稚啊。

 1 #include <stdio.h>
 2 #include <string.h>
 3 int X[] = {-2,-2,-1,-1,1,1,2,2},
 4     Y[] = {-1,1,-2,2,-2,2,-1,1};
 5 struct Point
 6 {
 7     int x,y;
 8     void init(int a,int b)
 9     {x = a; y = b;}
10 }q[70],s,t;
11 int head,tail,map[9][9];13 void bfs()
14 {
15     Point u,v;
16     int x1,y1,i;
17     head = tail = 0;
18     q[0] = s;
19     map[s.x][s.y] = 0;
20     if(s.x == t.x && s.y == t.y)
21     {
22         printf("To get from %c%d to %c%d takes 0 knight moves.\n"
23             ,s.x-1+'a',s.y,t.x-1+'a',t.y);
24         return ;
25     }
26     while(head <= tail)
27     {
28         u = q[head++];
29         for(i = 0; i < 8; i++)
30         {
31             x1 = u.x + X[i];
32             y1 = u.y + Y[i];
33             if(x1 > 0 && x1 < 9 && y1 > 0 && y1 < 9 && map[x1][y1] == -1)
34             {
35                 if(x1 == t.x && y1 == t.y)
36                 {    printf("To get from %c%d to %c%d takes %d knight moves.\n"
37                     ,s.x-1+'a',s.y,t.x-1+'a',t.y,map[u.x][u.y]+1);return ;}
38                 v.init(x1,y1);
39                 q[++tail] = v;
40                 map[x1][y1] = map[u.x][u.y] + 1;
41             }
42         }
43     }
44 }
45 int main()
46 {
47     char t1,t2;
48     while(~scanf("%c%d %c%d",&t1,&s.y,&t2,&t.y))
49     {
50         getchar();
51         s.x = t1 -'a'+1;
52         t.x = t2 -'a'+1;
53         memset(map,-1,sizeof map);
54         bfs();
55     }
56     return 0;
57 }

转载于:https://www.cnblogs.com/lzxskjo/archive/2012/08/29/2661108.html

poj - 2243 Knight Moves相关推荐

  1. OpenJudge/Poj 1915 Knight Moves

    1.链接地址: http://bailian.openjudge.cn/practice/1915 http://poj.org/problem?id=1915 2.题目: 总Time Limit: ...

  2. POJ 1915 Knight Moves

    Knight Moves Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 29822 Accepted: 14013 Descri ...

  3. POJ2243 Knight Moves —— A*算法

    题目链接:http://poj.org/problem?id=2243 Knight Moves Time Limit: 1000MS   Memory Limit: 65536K Total Sub ...

  4. POJ 2243:Knight Moves(双向BFS)

    http://poj.org/problem?id=2243 问题概述:一个8*8的棋盘,给定一个起点(列a-h,行1-8)和一个终点(列a-h,行1-8),按骑士的走法(走日字),从起点到 终点最少 ...

  5. 1 Knight Moves

    Problem F- Knight Moves 题目来源:https://vjudge.net/contest/207868#problem/F Problem description: 题意概括:中 ...

  6. 马走日poj java超时_简单搜索poj 2243(水

    应该也不算一题多解. 就是闲的..也是因为这题比较简单而且在网上看了别人写的特别好,就想用这题当入门练一下(逃 https://vjudge.net/problem/POJ-2243 题意: 8*8的 ...

  7. HDU 1372 Knight Moves

    最近在学习广搜  这道题同样是一道简单广搜题=0= 题意:(百度复制粘贴0.0) 题意:给出骑士的骑士位置和目标位置,计算骑士要走多少步 思路:首先要做这道题必须要理解国际象棋中骑士的走法,国际象棋中 ...

  8. hdu1372 Knight Moves BFS 搜索

    简单BFS题目 主要是读懂题意 和中国的象棋中马的走法一样,走日字型,共八个方向 我最初wa在初始化上了....以后多注意... 代码: 1 #include <iostream> 2 # ...

  9. Knight Moves

    Knight Moves poj-1915 题目大意:在国际象棋中有一个骑士,想从一个点到达另一个点.骑士可以从2*3的矩阵的一角跳到对角线的另一角.问:骑士最少需要跳多少次才能从一个点跳到另一个点. ...

最新文章

  1. 快来参加北京首届数字技术大体验活动 赢取万元奖励、百度用友致远实习就业机会...
  2. sql 删除用户失败
  3. bootstrap项目实例_SpringCloud Config 使用Git的应用实例
  4. ClickHouse设置用户名密码
  5. 这就是搜索引擎--读书笔记五--索引的建立与更新
  6. 这一团糟的代码,真的是我写的?!
  7. linux下c语言俄罗斯方块,c语言做俄罗斯方块
  8. “ORA-01034 - Oracle not available”和“ORA-27101 - shared memory realm does not exist”
  9. 新乡医学院2018计算机考试题,新乡医学院继教2018级局部解剖学复习自测下肢答案...
  10. 专业修复数据库修复软件不能修复的数据库
  11. 老板不在,你不得不做出越权的决定,咋办?(考试题系列)
  12. C# Process.Kill() 拒绝访问(Access Denied) 的解决方案
  13. Linux系统调用原理及实现
  14. 【静夜思】一些抽象代数的核心思想和实际应用
  15. knockoutjs 读源码
  16. ubuntu20.04 显卡驱动 cuda cudnn安装
  17. 磁共振成像原理-物理基础(质子在外部磁场的情况)
  18. 如何用MEGA-X构建进化树
  19. 小米手机 VS 阿里手机,阿里输在512MB内存,华为Honor只有电池容量跟小米差不多...
  20. HyperLynx(十六)PCI-E的设计与仿真

热门文章

  1. 面试必备,Java线程状态之细节回顾
  2. Jupyter官方神器:可视化 Debug 工具!
  3. AI 是否拥有意识?从意识的定义说起
  4. 一档博士40万年薪+70万房补!引进224人!​这所大学2021年公开招聘专任教师公告...
  5. 道理我都懂,但是神经网络反向传播时的梯度到底怎么求?
  6. PU-Net:一种基于数据的3D点云上采样网络
  7. 白嫖谷歌 GPU 资源!使用神经网络提取 PDF 表格工具来了,支持图片
  8. 2021届图像/计算机视觉算法提前批的面经 | 附内推码
  9. Django视图之HttpRequest对象和HttpResponse对象
  10. ACMNO.27 Python的两行代码解决 C语言-字符逆序 写一函数。使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入 一行字符 输出 逆序后的字符串