Knight Moves
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 13222 | Accepted: 7418 |
Description
A friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the shortest closed tour of knight moves that visits each square of a given set of n squares on a chessboard exactly once. He thinks that the most difficult part of the problem is determining the smallest number of knight moves between two given squares and that, once you have accomplished this, finding the tour would be easy.
Of course you know that it is vice versa. So you offer him to write a program that solves the "difficult" part.
Of course you know that it is vice versa. So you offer him to write a program that solves the "difficult" part.
Your job is to write a program that takes two squares a and b as
input and then determines the number of knight moves on a shortest route
from a to b.
Input
The
input will contain one or more test cases. Each test case consists of
one line containing two squares separated by one space. A square is a
string consisting of a letter (a-h) representing the column and a digit
(1-8) representing the row on the chessboard.
input will contain one or more test cases. Each test case consists of
one line containing two squares separated by one space. A square is a
string consisting of a letter (a-h) representing the column and a digit
(1-8) representing the row on the chessboard.
Output
For each test case, print one line saying "To get from xx to yy takes n knight moves.".
Sample Input
e2 e4
a1 b2
b2 c3
a1 h8
a1 h7
h8 a1
b1 c3
f6 f6
Sample Output
To get from e2 to e4 takes 2 knight moves.
To get from a1 to b2 takes 4 knight moves.
To get from b2 to c3 takes 2 knight moves.
To get from a1 to h8 takes 6 knight moves.
To get from a1 to h7 takes 5 knight moves.
To get from h8 to a1 takes 6 knight moves.
To get from b1 to c3 takes 1 knight moves.
To get from f6 to f6 takes 0 knight moves.
Source
解析:题意为求从棋盘a处到b处需要跳动的最少次数。广搜一遍即可,要注意骑士的行走方式。
aaarticlea/png;base64,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9XQ97A8+mHnrrVmdOn1CVpHT0vKUygeFH3bOKfn5ZZmZmbGxscOGDZs5c8ngwXPHjRu3evXqixcvUhzPcj2vP/+5bMuWLc8//7xCoXj44YcFrlt5Qhr8mDGbjxw5+v777z/99NMvvPBCfn7+vffe26tXr1tvvfWee+75+uuvhUz/cSmalla8atWquLi4W27JIr8Bn3xS/rvfvXf77b3uuuuuo0ePym1PsCycwrUuhjF267b4nnte5P47YsSfH3jggf/7v/+jmxakRIVi2YoVZSkpKb/+9WsMY3zuuY1bt26dMWNGdHR0t27dMjMzHQ4HxULdOHeugczA9ey54p138gYMGJCT80n//mvOn3dIsOQENx/2rl0XuR72gQPnDB06dMyYMQIPOxkgkIaRk5PTu3fvRx6Zdf/9n2zbtv3o0aN0V3zAZbCwcOGXGzduTEpKUigUAvsLXnHd6sYwxt/97o3Bgwfn5OTk5eXdc889w4YNKy8vFzhJxBWxYMHGt99+m/vZI8sI48ZNeeKJJ6hPCFBBFk6pr2+6//51pHWtXVvy9NPzybHLzv585syZOp1u7NixNTU1FH383Xenb721bZx/yy0fzZ//6c6dO996662+ffsqFIr77rvPYrGIvZR78qSDbMMhkZi44scfq0+dOvXBBx98//33jY2NopqlpaXliSc2kcHOunVfZGTMu+WWT8gq7MyZM1NSUh5//HGBh72lpeXTTw+4Nr8//GFldXX1oUOHXnvtte3bt9OtI5mg7dWrcPPmyqKiotjY2B49eogxOuAGWa7x5JPrvvnmm3379tnt9mvXhO55Gzt2K2kRn3++ISUlpVu3br/5zRwilBUryt58880RI0Y88cQT58+fx7Vk71y7dm3Tpk1FRUVvvfVWXFzcq6++unbt2iVLljz99NNRUVFz585dv349xf0FLS0tdXV1s2fPLigoyMjImDlz5ldffTVr1qw777xzwIABffv2/eijjyRYomtubt6/f//ChQvXrVu3dOnS6dOnz5w5U6vVLlmy5Isvvti/f7/YW++amppKS0tXr1791ltv9e/ff8qUKcXFxUaj8ZlnnomOjv7b3/5WVlZGtooFXcT169fNZnNhYeHnn39eUFCQm5s7Y8aMwYMHFxUVLV26dO/evbTqyE1ATJhQUllZybIsmQOurq6mPjpITa3s23fNxo3b+vf/1FUrc+cWHT9+nMpPUXNz87lz58hXc+eddyoUir/+9a8nT55cvnz5jBkzhg4detttty1dunT16tUUV82oIBentLS0nDx5MikpSalUdu7cOSEh4fnnn+/Xr99tt92mUCgmTpy4YcMGurtFWlpaDh06pNVqe/To0adPn+Tk5ClTpjz11FNqtXrhwoW1tbXS6P+nn35au3Ztv379evToERkZeffdd0+dOjUzM3Pr1q1UNmL6paamZty4cT169CCH/ZVXXrn77ruVSmX37t3/9Kc/7dy5U/g29mvXrv31r38lvYbo6OgRI0ZkZ2dnZmZ+8cUXAoV1c0Va+w4ffbS5rKxs9OjRXbt2HTt27Pnz56m8P4HM7kdGmnbt+vcPP/wwZ86crKys559fQpzy2mtrMzMzrVYrlZWs5ubmZcuWpaSkdO/evU+fPl9//fW1a9fWr18/cODA7t27R0dHv/jii4cOHZLbJn25OAUArl+/fvTo0cmTJz/66KOLFy8+efJkeXn5E088MWXKlI0bN1JMPtcSDx48+P7770+aNOnPf/7znDlz5s6du337drobLv1y9erVbdu26fX64cOHT548uaCgwGq1Up9raI/m5uaTJ09mZ2enpKQYjcbTp09//fXXycnJL7300qZNm2jN7Fy+fPnvf//72LFj77333meffXbRokUHDx6kIk3SyO+4Y/U335zu1GnZ6NEbKioq58+f37NnT6VSuWDBAro/48Rc3bsvX7Nm67PPPjthwoSnnnrqzjvv6tYtj0xFz5w5c/jw4UeOHKHS1K9cubJgwYLx48dnZmYSOTY2Nm7btu2FF17429/+9sMPP0h2Egl/ZOQUALh+/frFixfPnz/f0NDQ3NzsdDpra2sdDofw0amPEq9cuXLx4sWLFy86HI66urqQfEmNjY0XL16sqam5ePFifX29xJcja25uvnTpUm1tLRHZtWvXqB/2lpaWhoaG2tras2fPXrhw4cqVK7R+Xcn6SGzsZ6++alYqP928+fuioiKNRtOtW7cBAwbQXS4k/OEPFWTya/Tox1566aWMjIxXX/2MYYz33ff3VavWkMspmEwmKt1qMki/cOGCw+EgIziy1cDhcFA8hnSRl1MQJFCuXGkkE/y33lrw8cfF33777ahRo3r27BkdHT1z5kwxVu6am5vz8r5ym6DNz9+9Z88esjlFqVR+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" alt="" />
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std; struct Point{
int x, y;
}s, t;
//骑士行走的方向
int dir[][] = {{, }, {, -}, {-, }, {-, -}, {, }, {-, }, {, -}, {-, -}}; bool inChess(Point a)
{
return a.x >= && a.y >= && a.x < && a.y < ;
} int bfs()
{
if(s.x == t.x && s.y == t.y)
return ;
queue <Point> q;
bool visit[][];
int dis[][];
memset(visit, , sizeof(visit));
q.push(s);
visit[s.x][s.y] = true;
dis[s.x][s.y] = ;
while(!q.empty()){
Point a = q.front();
q.pop();
for(int i = ; i < ; ++i){
Point b;
b.x = a.x + dir[i][];
b.y = a.y + dir[i][];
if(inChess(b) && !visit[b.x][b.y]){
visit[b.x][b.y] = true;
dis[b.x][b.y] = dis[a.x][a.y] + ;
q.push(b);
if(b.x == t.x && b.y == t.y)
return dis[b.x][b.y];
}
}
}
return -;
} int main()
{
char s1[], s2[];
while(~scanf("%s%s", s1, s2)){
s.x = s1[] - 'a';
s.y = s1[] - '';
t.x = s2[] - 'a';
t.y = s2[] - '';
printf("To get from %s to %s takes %d knight moves.\n", s1, s2, bfs());
}
return ;
}