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 |
Re:哪位高手帮忙看看,为什么过不了啊??(附代码)In Reply To:哪位高手帮忙看看,为什么过不了啊??(附代码) Posted by:eleana at 2005-07-20 18:41:28 > #include <stdio.h> > #include <stack> > #include <queue> > const int maxn=8; > int p,q; > int board[maxn][maxn]; > typedef struct > { > int i,j; > }sss; > sss square[maxn*maxn]; > using namespace std; > stack<sss> s; > int fk[maxn][2]={{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}}; > void init() > { > int i,j; > for(i=0;i<maxn;i++) > for(j=0;j<maxn;j++) > { > board[i][j]=0; > square[i*maxn+j].i=i; > square[i*maxn+j].j=j; > } > } > bool DFS(int x,int y,int n) > { > s.push(square[x*maxn+y]); > board[x][y]=1; > if(n==p*q) return true; > int k,xx,yy; > for(k=0;k<maxn;k++) > { > xx=fk[k][0]+x;yy=fk[k][1]+y; > if(xx>=p||yy>=q||xx<0||yy<0) continue; > if(board[xx][yy]) continue; > if(DFS(xx,yy,n+1)) return true; > } > s.pop(); > board[x][y]=0; > return false; > } > > void doit() > { > char ch; > sss temp; > if(DFS(0,0,1)) > { > queue<sss> q; > while(!s.empty()) > { > q.push(s.top()); > s.pop(); > } > while(!q.empty()) > { > s.push(q.front()); > q.pop(); > } > while(!s.empty()) > { > temp=s.top(); > s.pop(); > ch=temp.j+65; > printf("%c%d",ch,temp.i+1); > } > } > else > printf("impossible"); > printf("\n\n"); > } > int main() > { > int N; > int i; > scanf("%d",&N); > init(); > for(i=0;i<N;i++) > { > scanf("%d%d",&p,&q); > printf("Scenario #%d:\n",i+1); > doit(); > } > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator