| ||||||||||
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