POJ2488---A Knight’s Journey
来源:互联网 发布:ubuntu tinyproxy 编辑:程序博客网 时间:2024/05/07 19:09
题目大意:马步行走,使其能够遍历全图,字典序输出
分析:DFS。要求字典序输出,所以,辅助数组的初始化,需从左至右初始。
代码:
#include <cstdio>#include <cstring>using namespace std;const int maxn = 31;int vis[maxn][maxn], path[maxn*maxn][2];int dx[8] = {-2, -2, -1, -1, 1, 1, 2, 2}; //辅助数组初始化时需注意顺序int dy[8] = {-1, 1, -2, 2, -2, 2, -1, 1};int n, m, cnt = 1, flag;int dfs(int x, int y) { if(cnt == n*m) { for(int i = 1; i <= cnt; i++) printf("%c%d", path[i][0]+'A'-1, path[i][1]); flag = 1; return true; } else { ; for(int i = 0; i < 8; i++) { int s = x + dx[i], t = y + dy[i]; if(!(s < 1 || s > m || t < 1 || t > n) && !vis[s][t] && !flag) { cnt++; vis[s][t] = 1; path[cnt][0] = s; path[cnt][1] = t; dfs(s, t); cnt--; vis[s][t] = 0; } } return false; }}int main() { int k; scanf("%d", &k); for(int i = 0; i < k; i++) { scanf("%d%d", &n, &m); memset(vis, 0, sizeof(vis)); memset(path, 0, sizeof(path)); printf("Scenario #%d:\n", i+1); vis[1][1] = 1; path[1][0] = 1; path[1][1] = 1; flag = 0; dfs(1, 1); if(flag) printf("\n\n"); else printf("impossible\n\n"); } return 0;}
0 0
- poj2488 A Knight's Journey
- poj2488 - A Knight's Journey
- poj2488 A Knight's Journey
- POJ2488--A Knight's Journey
- POJ2488:A Knight's Journey
- poj2488 A Knight's Journey
- poj2488 A Knight's Journey
- poj2488---A Knight's Journey
- POJ2488---A Knight’s Journey
- poj2488 A Knight's Journey
- Poj2488 A Knight's Journey
- POJ2488 A Knight's Journey
- poj2488 A Knight's Journey
- poj2488 A Knight's Journey
- poj2488-A Knight's Journey
- POJ2488-A Knight's Journey
- poj2488 A Knight's Journey
- poj2488——A Knight's Journey
- MySQL新建用户,授权,删除用户,修改密码
- android中GridView显示网格
- Android手势检测【转载】
- 查看linux系统
- C++Primer学习概要:引用和指针
- POJ2488---A Knight’s Journey
- 数据库Sharding的基本思想和切分策略
- 物联12:谐振电路
- String,StringBuffer,StringBuilder的区别。
- 大量数据的链接
- 如何学习数据挖掘
- 创建Class对象的4中方式
- Node.js learnyounode #6 MAKE IT MODULAR 题目和答案
- shell 中 grep、sed、awk 命令