Knight Movies问题,请教一下哪里出毛病了
/************************************************************************//* 功能:Knight Moves *//************************************************************************/#include <iostream>#include <queue>using namespace std;int direction[8][2]={(-2,+1),(-1,+2),(+1,+2),(+2,+1),(+2,-1),(+1,-2),(-1,-2),(-2,-1)};char start[3];char end[3];int travel_direct;int min_step;struct Knight{ int x; int y;};struct Node{ Knight k; Node *child[8];};int search(int si,int sj,int ei,int ej){ min_step=0; queue<Node*> travel; Node *root,*f; Knight k; root=f=NULL; bool flag=true; int tempx,tempy; k.x=si; k.y=sj; root->k=k; if(root->k.x==si&&root->k.y==sj) { return 0; } else { travel.push(root); while(!travel.empty()&&flag) { f=root; f=travel.front(); travel.pop(); min_step++; for(int i=0;i<8;i++) { tempx=f->child[i]->k.x=root->k.x+direction[i][0]; tempy=f->child[i]->k.y=root->k.y+direction[i][1]; if(tempx==ei&&tempy==ej) { //return min_step; flag=false; break; } if(tempx<=8&&tempx>0&&tempy<=0&&tempy>0) travel.push(f); } } return min_step; }}int main(){ while(scanf("%s %s",start,end)) { int si,sj,ei,ej; int min; si=start[0]-'a'+1; sj=start[1]-'0'; ei=end[0]-'a'+1; ej=end[1]-'0'; min=search(si,sj,ei,ej); printf("To get from %s to %s takes %d knight moves.\n",start,end,min); } return 0;}