您的位置:首页 > 其它

poj 2488

2013-04-14 19:38 323 查看
简单dfs

#include <stdio.h>

#include <stdlib.h>

int n,m,time,ture;

int a[9][9];

int make(int t,int s)

{

if(ture) return(0);

if(t>=1&&t<=n&&s>=1&&s<=m&&a[t][s]==0)

{

a[t][s]=++time;

if(time==n*m)

{

ture=1;

int i,j,k;

for(k=1;k<=n*m;k++)

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

if(a[i][j]==k)

printf("%c%d",j+'A'-1,i);

printf("\n");

return(0);

}

search(t,s);

time--;

a[t][s]=0;

}

}

int search(int t,int s)

{

if(ture) return(0);

make(t-1,s-2);

make(t+1,s-2);

make(t-2,s-1);

make(t+2,s-1);

make(t-2,s+1);

make(t+2,s+1);

make(t-1,s+2);

make(t+1,s+2);

}

int main()

{

int i,j,k,p;

scanf("%d",&k);

for(p=1;p<=k;p++)

{

scanf("%d %d",&n,&m);

printf("Scenario #%d:\n",p);

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

a[i][j]=0;

time=1;

ture=0;

a[1][1]=1;

if(n*m==1) {printf("A1\n");ture=1;}

else search(1,1);

if(!ture) printf("impossible\n");

printf("\n");

}

return 0;

}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: