现在的位置: 首页 > 综合 > 正文

poj 2488 A Knight’s Journey

2018年04月29日 ⁄ 综合 ⁄ 共 768字 ⁄ 字号 评论关闭

一个简单的深搜题。

麻烦在于它要求是字典序来进行搜索。(这错好几次)

还有输出要空行  要注意;

#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;
}
【上篇】
【下篇】

抱歉!评论已关闭.