一个简单的深搜题。
麻烦在于它要求是字典序来进行搜索。(这错好几次)
还有输出要空行 要注意;
#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;
}