poj 2488 A Knight's Journey

来源:互联网 发布:linux mysql 安装包 编辑:程序博客网 时间:2024/06/08 19:52
#include<stdio.h>#define MAX_N 30int dx[8]={-1,1,-2,2,-2,2,-1,1};int dy[8]={-2,-2,-1,-1,1,1,2,2};struct node{int x1,y1;}path[MAX_N*MAX_N];int n,m,ans,flag;int dis[MAX_N][MAX_N];int chess[MAX_N][MAX_N];void dfs(int x,int y,int num){int i,x2,y2;if(num==ans){ flag=1;return ;}for(i=0;i<8;i++){x2=x+dx[i];y2=y+dy[i];if(x2<0||x2>=n||y2<0||y2>=m||dis[x2][y2])continue;path[num].x1=x2;path[num].y1=y2;dis[x2][y2]=1;dfs(x2,y2,num+1);if(flag)return ;dis[x2][y2]=0;}}int main(void){int T,i,cnt=1;scanf("%d",&T);while(T--){memset(dis,0,sizeof(dis));dis[0][0]=1;path[0].x1=0;path[0].y1=0;flag=0;scanf("%d%d",&n,&m);ans=n*m;printf("Scenario #%d:\n",cnt++);dfs(0,0,1);if(flag){for(i=0;i<ans;i++){printf("%c%d",path[i].y1+'A',path[i].x1+1);}printf("\n\n");}elseprintf("impossible\n\n");}}

0 0