| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
DFS 0ms附代码:(注意字典序)
#include <iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int step[8][2]= {{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}};
int stack[100][2];
bool v[27][27];
int n,p,q,ncase=1;
int flag;
void dfs(int num)
{
int nx,ny;
int numn;
if(num==p*q-1){flag=1;return;}
for(int i=0;i<8;i++)
if(flag==0)
{
nx=stack[num][0]+step[i][0];ny=stack[num][1]+step[i][1];
if((!v[nx][ny])&&(nx>=1)&&(nx<=p)&&(ny>=1)&&ny<=q)
{
v[nx][ny]=1;
numn=num+1;
stack[numn][0]=nx;
stack[numn][1]=ny;
dfs(numn);
v[nx][ny]=0;
}
}
else return;
return;
}
int main()
{
cin>>n;
while(n--)
{
cin>>p>>q;
memset(v,0,sizeof(v));
memset(stack,0,sizeof(stack));
v[1][1]=1;
flag=0;
stack[0][0]=1;
stack[0][1]=1;
dfs(0);
printf("Scenario #%d:\n",ncase);
ncase++;
if(!flag||p*q>26)printf("impossible");
else
for(int i=0;i<p*q;i++)
{
printf("%c%d",stack[i][1]+64,stack[i][0]);
}
cout<<endl<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator