UVA439 骑士的移动 Knight Moves
#include<bits/stdc++.h> using namespace std; char a,c; int b,d; int mp[10][10]; int x[10]={2,2,1,-1,1,-1,-2,-2}; int y[10]={1,-1,2,2,-2,-2,1,-1}; int main(){ while(cin>>a>>b>>c>>d){ memset(mp,-1,sizeof(mp)); int k=1,num=0; mp[a-'a'+1][b]=0; while(k<64){ for(int i=1;i<=8;++i){ for(int j=1;j<=8;++j){ if(mp[i][j]==num){ for(int m=0;m<8;++m){ if(i+x[m]<=8&&i+x[m]>=1&&j+y[m]<=8&&j+y[m]>=1&&mp[i+x[m]][j+y[m]]==-1){ mp[i+x[m]][j+y[m]]=num+1; } } } } } num++; if(mp[c-'a'+1][d]!=-1) break; } cout<<"To get from "<<a<<b<<" to "<<c<<d<<" takes "<<mp[c-'a'+1][d]<<" knight moves."<<endl; } }
一道不能提交的普及+/提高-。。。。