一个简单的深搜题。
麻烦在于它要求是字典序来进行搜索。(这错好几次)
还有输出要空行 要注意;
#include<stdio.h> #include<string.h> int step[8][2] = {-2, -1, -2, 1, -1, -2, -1, 2, 1, -2, 1, 2, 2, -1, 2, 1}; char s[27][27],t[27][2]; int x[27][27],b,c,sum; void show(int q,int w,int e) { int i,w1,e1; if(q==b*c) { sum=1; return ; } for(i=0;i<8;i++) { w1=w+step[i][0]; e1=e+step[i][1]; if(w1<=c&&w1>0&&e1<=b&&e1>0&&x[w1][e1]==0) { x[w1][e1]=1; t[q+1][0]='A'+w1-1; t[q+1][1]='1'+e1-1; show(q+1,w1,e1); if(sum==1) return; x[w1][e1]=0; t[q+1][0]='A'; t[q+1][1]='0'; } } } int main() { int r=1,a,i,y; scanf("%d",&a); while(a--) { sum=0; memset(x,0,sizeof(x)); memset(s,0,sizeof(s)); y=1; scanf("%d %d",&b,&c); printf("Scenario #%d:\n",r); r++; t[1][0]='A'; t[1][1]='1'; x[1][1]=1; show(y,1,1); if(sum) { for(i=1;i<=b*c;i++) printf("%c%c",t[i][0],t[i][1]); } else printf("impossible"); printf("\n\n"); } return 0; }