跳马,knight我当成 象 了,wlgq,直接爆搜1A
#include <bits/stdc++.h>
using namespace std;
char ch1,ch2,ch;
int stx,sty,edx,edy;
int vis[10][10];
const int movx[8]={1,2 ,2,1, -1,-2, -1,-2};
const int movy[8]={2,1 ,-1,-2, -2,-1, 2,1};
void dfs(int x,int y, int mov)
{
if (x>8||x<=0||y>8||y<=0||vis[x][y]<=mov)
return;
vis[x][y]=min(vis[x][y],mov);
for (int i=0;i<8;i++)
{
int temx=x+movx[i];
int temy=y+movy[i];
dfs(temx,temy,mov+1);
}
return ;
}
void Gao()
{
stx=ch1-'a'+1;
edx=ch2-'a'+1;
// cout<<stx<<" "<<sty<<" "<<edx<<" "<<edy<<endl;
memset(vis,10000,sizeof(vis));
dfs(stx,sty,0);
printf("To get from %c%d to %c%d takes %d knight moves.\n",
ch1,sty,ch2,edy,vis[edx][edy]);
}
int main()
{
// freopen("a.in","r",stdin);
while (scanf("%c%d %c%d%c",&ch1,&sty,&ch2,&edy,&ch)!=EOF)
Gao();
return 0;
}