| ||||||||||
| 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 | |||||||||
我晕....怎么会错啊...牛人帮我看看...#include <iostream>
using namespace std;
int m,n,a[28][28]={0},count=0,flag,ff=1;
const int fy[9]={0,-2,-2,-1,-1,1,1,2,2};
const int fx[9]={0,-1,1,-2,2,-2,2,-1,1};
char path[678];
int pathn[678]={0};
char b[27];
void ss()
{
int i;
for(i=1;i<=26;i++)
b[i]='A'+i-1;
}
void output()
{
int j;
cout<<"Scenario #"<<ff<<":"<<endl;
ff++;
for(j=1;j<=m*n;j++)
cout<<path[j]<<pathn[j];
cout<<endl;
cout<<endl;
}
bool check(int x,int y)
{
if(x>=1&&x<=m&&y>=1&&y<=n)return true;
return false;
}
void dfs(int x,int y)
{
int xx,yy,i;
a[x][y]=1;
count++;
path[count]=b[x];
pathn[count]=y;
if(count==m*n)
{
output();
flag=1;
return;
}
for(i=1;i<=8;i++)
{
xx=x+fx[i];
yy=y+fy[i];
if(check(xx,yy)&&!a[xx][yy])
dfs(xx,yy);
}
a[xx][yy]=0;
}
int main()
{
int i,j,test,tt;
cin>>test;
ss();
while(test--)
{
count=0;
flag=0;
cin>>m>>n;
tt=m;
m=n;
n=tt;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
dfs(i,j);
if(flag)
break;
else
{
count=0;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
}
}
if(!flag)
{
cout<<"Scenario #"<<ff<<":"<<endl;
ff++;
cout<<"impossible"<<endl;
cout<<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