钢结构网站,网络项目,seo怎么做整站排名,分类目录网题目见zoj 1091 使用宽度搜索优先来求解#xff0c;这个算法已经忘记的差不多了#xff0c;所以写出来的代码很罗嗦#xff0c;看起来很不清晰。 好像还可以直接用公式或者神经网络算法求解,详见Knights Tour /* zoj 1091 Knight Moves */
#include stdio.h
#incl… 题目见zoj 1091 使用宽度搜索优先来求解这个算法已经忘记的差不多了所以写出来的代码很罗嗦看起来很不清晰。 好像还可以直接用公式或者神经网络算法求解,详见Knights Tour /* zoj 1091 Knight Moves */
#include stdio.h
#include string.h
#define MAX 100
#define BOARDSIZE (81)
struct queueStruct{int x;int y;int step;
}queue[MAX],tempQueue;
int front;
int rear;
int minStep;
int isVisited[BOARDSIZE][BOARDSIZE];
const int searchTable[8][2] {{-2,-1},{-1,-2},{-2,1},{-1,2},{1,2},{2,1},{1,-2},{2,-1}};
int bfs(int startx, int starty, int endx, int endy, int step);int main(void)
{char src[3],des[3];int startx, starty, endx, endy;while(scanf(%s %s,src,des) 2){memset(isVisited,0,sizeof(isVisited));memset(queue,0,sizeof(queue));front rear 0;startx src[0] - a 1;starty src[1] - 0;endx des[0] - a 1;endy des[1] - 0;bfs(startx,starty,endx,endy,0);printf(To get from %s to %s takes %d knight moves.\n,src,des,minStep);}return 0;
}
int bfs(int startx, int starty, int endx, int endy, int step)
{int i;struct queueStruct q;if(startx endx starty endy){minStep step;return 0;}isVisited[startx][starty] 1;tempQueue.x startx;tempQueue.y starty;tempQueue.step step;queue[rear] tempQueue;while(front rear){tempQueue queue[front];for(i 0; i BOARDSIZE; i){/* q tempQueue;*/q.x tempQueue.x searchTable[i][0];q.y tempQueue.y searchTable[i][1];q.step tempQueue.step 1;if(q.x 1 || q.x 8 || q.y 1 || q.y 8 ||isVisited[q.x][q.y])continue;if(q.x endx q.y endy){minStep q.step;return 0;}queue[rear] q;isVisited[q.x][q.y] 1;}}return 0;
}