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:本人菜鸟为啥一直WA我不知道为啥一直不是字典序呢In Reply To:本人菜鸟为啥一直WA Posted by:alphachuang at 2011-11-18 19:56:30 > #include <stdio.h> > #include <string.h> > #include <queue> > using namespace std; > int y[8]={-2,-2,-1,-1,1,1,2,2}; > int x[8]={-1,1,-2,2,-2,2,-1,1}; > int a[9][9]={0};//棋盘用于记录每个位置是否都被遍历过 > int path[26]={0};//记录路径的选择 > queue <int > q_queue; > queue <int > p_queue; > bool all_done(int p,int q);//判断是否全部遍历 > int main() > { > int n,p,q;//n cases > int i,j,k; > scanf("%d",&n); > for(i=0;i<n;i++) > { > scanf("\n"); > scanf("%d%d",&p,&q); > q_queue.push(q); > p_queue.push(p); > } > for(i=n;i>0;i--) > { > q=q_queue.front(); > q_queue.pop(); > p=p_queue.front(); > p_queue.pop(); > memset(a,0,sizeof(a)); > memset(path,0,sizeof(path)); > int curr_x,curr_y; > curr_x=1;//记录初始位置 > curr_y=1; > a[curr_x][curr_y]=1; > for(j=1;j<p*q;j++)//对于p*q的表格要全遍历完成需行走p*q-1次 > { > for(k=path[j];k<8;k++)//对于每一步行走的试探 > { > if(curr_x+x[k]<=p&&curr_y+y[k]<=q > &&curr_x+x[k]>=1&&curr_y+y[k]>=1 > &&a[curr_x+x[k]][curr_y+y[k]]!=1)//判断是否超界 > { > curr_x=curr_x+x[k];//未超界向下走一步 > curr_y+=y[k]; > path[j]=k;//记录当前所走路径 > a[curr_x][curr_y]=1;//标记相应单元格 > break;//跳过此步 > } > } > if(k==8)//此时证明已经无法继续走应该回退到上一步 > { > path[j]=0;//清空当前步 > j=j-1;//回退一步 > a[curr_x][curr_y]=0;//清空当前标记 > curr_x-=x[path[j]]; > curr_y-=y[path[j]]; > path[j]++; > j=j-1; > } > if(j<0) > { > break; > } > } > if(all_done(p,q)) > { > curr_x=1; > curr_y=1; > printf("Scenario #%d:\n",n-i+1); > printf("%c%d",('A'+curr_x-1),curr_y); > for(int k=1;k<p*q;k++) > { > curr_x=curr_x+x[path[k]]; > curr_y=curr_y+y[path[k]]; > printf("%c%d",('A'+curr_x-1),curr_y); > } > printf("\n"); > } > else > { > printf("Scenario #%d:\n",n-i+1); > printf("impossible\n"); > } > } > return 0; > } > bool all_done(int p,int q) > { > int i,j; > for(i=1;i<=p;i++) > { > for(j=1;j<=q;j++) > { > if(a[i][j]==0) > return false; > } > } > return true; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator