zoukankan      html  css  js  c++  java
  • POJ 2243

     1 #include <iostream>
     2 #include <queue>
     3 using namespace std;
     4 
     5 int dir[8][2] = {-2,-1,-2,1,2,-1,2,1,1,-2,-1,-2,1,2,-1,2};
     6 
     7 struct node
     8 {
     9     int x;
    10     int y;
    11     int step;
    12     node()
    13     {
    14         step = 0;
    15     }
    16 };
    17 
    18 queue<node> coll;
    19 
    20 bool mark[8][8];
    21 
    22 node beg;
    23 node end;
    24 
    25 bool bfs(node p);
    26 
    27 int main()
    28 {
    29     //freopen("acm.acm","r",stdin);
    30     char s_1[2];
    31     char s_2[2];
    32 
    33     while(cin>>s_1>>s_2)
    34     {
    35         memset(mark,false,sizeof(mark));
    36         beg.x = s_1[0] - 'a';
    37         beg.y = s_1[1] - '0' - 1;
    38         
    39         end.x = s_2[0] - 'a';
    40         end.y = s_2[1] - '0' - 1;
    41         coll.push(beg);
    42         mark[beg.x][beg.y] = true;
    43         cout<<"To get from "<<s_1<<" to "<<s_2<<" takes ";
    44         
    45         while(!coll.empty() && !bfs(coll.front()))
    46         {
    47             coll.pop();
    48         }
    49         while(!coll.empty())
    50         {
    51             coll.pop();
    52         }
    53         cout<<" knight moves."<<endl;
    54     }
    55 }
    56 
    57 bool bfs(node p)
    58 {
    59     int i;
    60     int j;
    61     if(p.x == end.x && p.y == end.y)
    62     {
    63         cout<<p.step;
    64         return true;
    65     }
    66     int tem_i;
    67     int tem_j;
    68     node tem;
    69     
    70     for(i = 0; i < 8; ++ i)
    71     {
    72         tem_i = p.x + dir[i][0];
    73         tem_j = p.y + dir[i][1];
    74         if(tem_i >= 0 && tem_i < 8 && tem_j >= 0 && tem_j < 8 && !mark[tem_i][tem_j])
    75         {
    76             tem.x = tem_i;
    77             tem.y = tem_j;
    78             tem.step = p.step + 1;
    79             mark[tem_i][tem_j] = true;
    80             coll.push(tem);
    81         }
    82     }
    83     return false;
    84 }

    关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

    技术网站地址: vmfor.com

  • 相关阅读:
    P1017 进制转换
    P1100 高低位交换
    P1469 找筷子
    P1866 编号
    SQL常用语句(T-SQL、PL/SQL)
    Proxyer内网穿透配置教程
    使用JS检测自定义协议是否存在
    C# 代码启动ClickOnce应用
    SQL Server 异地备份到远程共享文件夹异常处理
    发布ClickOnce应用程序步骤与URL传参应用
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4566739.html
Copyright © 2011-2022 走看看