POJ 2488 A Knight's Journey 搜索
来源:互联网 发布:ubuntu 查看系统日志 编辑:程序博客网 时间:2024/05/18 03:30
题目:
http://poj.org/problem?id=2488
题意:
给定一个n*m的国际象棋棋盘,用数字表示行,用字母表示列。有一个骑士,问骑士能不能遍历整个棋盘,一个方格只能走一次,按先后顺序输出所经过的方格位置,对于一个方格的位置,列坐标在前行坐标在后,如果有多种方法,就输出字典序最小的那个
思路:
搜索的时候注意方向就好了,先按列小的搜,列相同就按行小的搜
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace std;typedef long long ll;const int N = 30, INF = 0x3f3f3f3f;//注意dx,dy数组的定义int dx[] = {-1, 1, -2, 2, -2, 2, -1, 1}, dy[] = {-2, -2, -1, -1, 1, 1, 2, 2};bool vis[N][N];int res[N*N][2];int n, m, cas = 0;bool found;void dfs(int x, int y, int cur){ if(found) return; vis[x][y] = true; res[cur][0] = x, res[cur][1] = y; if(cur+1 == n*m) { found = true; printf("Scenario #%d:\n", ++cas); for(int i = 0; i <= cur; i++) printf("%c%d", res[i][1] + 'A', res[i][0] + 1); printf("\n\n"); } for(int i = 0; i < 8; i++) { int nx = x + dx[i], ny = y + dy[i]; if(nx >= 0 && nx < n && ny >= 0 && ny < m && !vis[nx][ny]) { dfs(nx, ny, cur + 1); vis[nx][ny] = false; } }}int main(){ int t; scanf("%d", &t); while(t--) { scanf("%d%d", &n, &m); memset(vis, 0, sizeof vis); found = false; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { dfs(i, j, 0); vis[i][j] = false; if(found) break; } if(found) break; } if(! found) printf("Scenario #%d:\nimpossible\n\n", ++cas); } return 0;}
0 0
- 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 2488A Knight's Journey(搜索 记录路径)
- 搜索 -dfs-POJ-2488-A Knight's Journey
- POJ 2488A Knight's Journey(搜索入门)
- 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
- ConcurrentHashMap
- 算法训练 幂方分解
- 百度地图的使用(3)
- LeetCode 100. Same Tree
- C#实现检测U盘的插拔
- POJ 2488 A Knight's Journey 搜索
- Java 打印1到最大的n位数
- SAP HANA使用XS和HTTP创建proxy
- CentOS、Ubuntu、Debian三个linux比较异同
- Codeforces Round #304 (Div. 2)
- Android自定义圆角矩形
- HTML5学习(一) 初始网页
- 学习笔记———《自动文档摘要评价方法---Edmundson和ROUGE》
- leetcode 494