POJ2488-A Knight's Journey
http://poj.org/problem?id=2488
和之前的都是一系列- -#
#include <stdio.h> #include <stdlib.h> #define MAX 27 int map[MAX][MAX],sx[MAX],sy[MAX]; int dir[8][2]={-2,-1,-2,1,-1,-2,-1,2,1,-2,1,2,2,-1,2,1},p,q,sign,step; void dfs(int i,int j) { int x,y,k; if(sign) return; step++; sx[step]=i; sy[step]=j; if(step==p*q) { sign=1; return; } map[i][j]=1; for(k=0;k<8;k++) { y=j+dir[k][0]; x=i+dir[k][1]; if(map[x][y]==0&&x>0&&x<=p&&y>0&&y<=q) { dfs(x,y); step--; } } map[i][j]=0; } int main(void) { int i,j,n,t; scanf("%d",&n); for(t=1;t<=n;t++) { sign=step=0; scanf("%d%d",&p,&q); for(i=1;i<=p;i++) for(j=1;j<=q;j++) map[i][j]=0; dfs(1,1); printf("Scenario #%d:\n",t); if(sign) { for(i=1;i<=p*q;i++) printf("%c%d",sy[i]+64,sx[i]); printf("\n"); } else printf("impossible\n"); if(n!=0) printf("\n"); } return 0; }