POJ 2488

来源:互联网 发布:淘宝男装服装 编辑:程序博客网 时间:2024/05/22 07:57
//此题关键是字典序怎么理解的问题#include<iostream>using namespace std;struct Node{int x,y;};Node nd[64];Node output[64];int visited[50][50];int res;int row,col,x,y,k;bool ans,flag;int direc[8][2]={{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}};bool check(int x,int y){if(x<0||y<0||x>=row||y>=col)return false;return true;}void dfs(int a,int b){if(flag)return;visited[a][b]=true;nd[res].x=a;nd[res].y=b;res++;if(res==row*col){ans=true;flag=true;for(int i=0;i<row*col;i++){output[i].x=nd[i].x;output[i].y=nd[i].y;}return;}for(int i=0;i<8;i++){if(check(a+direc[i][0],b+direc[i][1])&&visited[a+direc[i][0]][b+direc[i][1]]==false){dfs(a+direc[i][0],b+direc[i][1]);res--;visited[a+direc[i][0]][b+direc[i][1]]=false;}}}int main(){int n;scanf("%d",&n);k=0;while(n--){k++;printf("Scenario #%d:\n",k);scanf("%d%d",&row,&col);memset(visited,0,sizeof(visited));res=0;ans=flag=false;dfs(0,0);if(ans){for(int i=0;i<col*row;i++){printf("%c%d",char(output[i].y+1+64),output[i].x+1);}printf("\n");}else{printf("impossible\n");}printf("\n");}return 0;}

原创粉丝点击