POJ 2488 A Knight's Journey
来源:互联网 发布:流程优化的目的 编辑:程序博客网 时间:2024/06/10 14:07
经典的骑士巡游问题,注意字典序最小,应该从上到下,从左到右遍历
#include <iostream>#include <cstdio>#include <vector>using namespace std;const int maxn=30;int di[]={-1,1,-2,2,-2,2,-1,1},dj[]={-2,-2,-1,-1,1,1,2,2},n,m;bool vis[maxn][maxn];vector<char>stak;bool backtraking(int ci,int cj,int cnt){vis[ci][cj]=1;if(cnt==0){for (int i=0;i<stak.size();++i){printf("%c",stak[i]);}printf("\n");return true;}for (int i=0;i<8;++i){int ni=ci+di[i],nj=cj+dj[i];if(ni>=0&&ni<n&&nj>=0&&nj<m&&!vis[ni][nj]){stak.push_back('A'+nj),stak.push_back('1'+ni);if(backtraking(ni,nj,cnt-1))return true;stak.pop_back(),stak.pop_back();}}vis[ci][cj]=0;return false;}int main(){int t,cas=1;scanf("%d",&t);while (t--){scanf("%d%d",&n,&m);int i,j;for (int i=0;i<30;++i)for (int j=0;j<30;++j)vis[i][j]=0;printf("Scenario #%d:\n",cas++);stak.clear();for (i=0;i<m;++i){for (j=0;j<n;++j){stak.push_back('A'+i),stak.push_back('1'+j);if(backtraking(j,i,n*m-1))break;stak.pop_back(),stak.pop_back();}if(j<n)break;}if(i>=m)printf("impossible\n");printf("\n");}return 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
- C# 静态构造函数和实例构造函数
- Tomcat源码学习笔记
- 第六周上机任务项目1-(1)
- VC++ APC注入
- USER_TMSADM_DENIED
- POJ 2488 A Knight's Journey
- Linux.NET学习手记(1)
- opengl 中glpushmatrix和glpopmatrix函数的个人理解
- 设置Session失效的几种方法
- Linux进程间通信之---管道
- inside the C++ memory model
- hdu 1203 dp(0,1 背包) I NEED A OFFER!
- 十天学会web标准DIV CSS第二天 一列布局
- Java 构造器