zoukankan      html  css  js  c++  java
  • UVa-439 Knight Moves

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 struct Node
     4 {
     5     int r,c;
     6     Node(int a,int b) : r(a),c(b) {}
     7     Node() {}
     8 };
     9 const int dr[] = {-2,-2,-1,-1,1,1,2,2};
    10 const int dc[] = {-1,1,-2,2,-2,2,-1,1};
    11 
    12 int r1,c1,r2,c2;
    13 string in1,in2;
    14 void read()
    15 {
    16     r1 = 8-(in1[1]-'0');c1 = in1[0]-'a';
    17     cin >> in2;r2 = 8-(in2[1]-'0');c2 = in2[0]-'a';
    18 }
    19 
    20 int d[9][9];
    21 bool limit(Node u)
    22 {
    23     return u.r>=0&&u.r<=7&&u.c>=0&&u.c<=7;
    24 }
    25 int solve()
    26 {
    27     memset(d,-1,sizeof(d));
    28     queue<Node> q;
    29     q.push(Node(r1,c1));
    30     d[r1][c1] = 0;
    31     while(!q.empty())
    32     {
    33         Node u = q.front();
    34         q.pop();
    35         if(u.r==r2&&u.c==c2)    return d[r2][c2];
    36         for(int i = 0; i < 8; i ++)
    37         {
    38             Node v = u;
    39             v.r += dr[i];
    40             v.c += dc[i];
    41             if(limit(v)&&d[v.r][v.c]<0)
    42             {
    43                 d[v.r][v.c] = d[u.r][u.c] + 1;
    44                 q.push(v);
    45             }
    46         }
    47     }
    48 }
    49 
    50 void print(int rnt)
    51 {
    52     cout << "To get from " <<in1<< " to " <<in2<< " takes " <<rnt<< " knight moves." << endl;
    53 }
    54 int main()
    55 {
    56     while(cin >> in1)
    57     {
    58         read();
    59         int rnt = solve();
    60         print(rnt);
    61     }
    62     return 0;
    63 }
  • 相关阅读:
    huffman压缩解压文件
    C++ fstream 详解
    huffman编码
    ios cocoapods
    POI2Vec: Geographical Latent Representation for Predicting Future Visitors
    latex生成pdf 出现missing$ inserted
    矩阵、向量求导法则

    矩阵范数求导
    hive
  • 原文地址:https://www.cnblogs.com/Asurudo/p/10023198.html
Copyright © 2011-2022 走看看