poj 2488:A Knight's Journey
来源:互联网 发布:eplan软件界面 编辑:程序博客网 时间:2024/05/08 04:36
非常简单的骑士游历问题,即给定一个p*q的棋盘,在棋盘的任意位置开始寻找能够遍历整个棋盘的路径,若存在则输出其中的最小序列,否则就输出impossible。同时棋盘的格子横坐标为A、B、……,纵坐标为1、2、……。
dfs。很简单的dfs。
#include <cstdio>#include <cstring>#include <cmath>#include <iostream>#include <algorithm>#include <queue>#include <stack>using namespace std;const int MAXN=30;char vis[MAXN][MAXN];int X[MAXN],Y[MAXN];int step=0;inline bool MOVE(int p,int q,int i,int j){ int x=i,y=j; switch(vis[i][j]){//此处参考了网上的一种便于求最小序列的移动方法 case 1:x=i-2;y=j-1;break; case 2:x=i-2;y=j+1;break; case 3:x=i-1;y=j-2;break; case 4:x=i-1;y=j+2;break; case 5:x=i+1;y=j-2;break; case 6:x=i+1;y=j+2;break; case 7:x=i+2;y=j-1;break; case 8:x=i+2;y=j+1;break; } if(x>=0 && x<q && y>=0 && y<p && !vis[x][y]){ step++;X[step]=x;Y[step]=y;vis[x][y]=1; return MOVE(p,q,x,y); } else if(vis[i][j]<=8){ vis[i][j]++; return MOVE(p,q,i,j); } else if(vis[i][j]>8){ if(step==p*q-1){ return 1; } else if(step>=0){ vis[i][j]=0;X[step]=0;Y[step]=0;step--; vis[X[step]][Y[step]]++; return MOVE(p,q,X[step],Y[step]); } else return 0; }}int main(){ int T,i; cin>>T; for(i=1;i<=T;i++){ int p,q; cin>>p>>q; int m,n,k; bool flag=0; printf("Scenario #%d:\n",i); for(n=0;n<p;n++){ for(m=0;m<q;m++){ step=0; memset(vis,0,sizeof(vis)); memset(X,0,sizeof(X)); memset(Y,0,sizeof(Y)); X[step]=m;Y[step]=n;vis[m][n]=1; flag=MOVE(p,q,m,n); if(flag) break; } if(flag) break; } if(flag){ for(k=0;k<p*q;k++){ printf("%c%d",'A'+X[k],Y[k]+1); } cout<<endl; } else cout<<"impossible"<<endl; cout<<endl; } return 0;}
0 0
- POJ 2488 A Knight's Journey
- POJ 2488 A Knight's Journey DFS
- Poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey (dfs)
- poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- POJ-2488-A Knight's Journey
- POJ 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- poj 2488 A Knight's Journey
- POJ 2488 A Knight's Journey
- POJ 2488(A Knight's Journey)
- POJ 2488 A Knight's Journey
- POJ-2488-A Knight's Journey
- tableView
- FZU 2035
- poj 2785--4 Values whose Sum is 0(折半枚举)
- 企业级Hadoop能够解决的问题
- 一起学Maven(Maven仓库管理器之应用Nexus)<六>
- poj 2488:A Knight's Journey
- linux 列出两个文件的差异行
- linux内核cdev_init系列函数(字符设备的注册)
- 多线程精华,面试专用
- 【C#】简易网页计算器实现
- 统计大于均值的数字个数
- MySQL优化 之 Discuz论坛MySQL通用优化
- DataGridView二维表头与合并单元格
- Android R文件丢失解决办法