[poj]2488 A Knight's Journey dfs+路径打印
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 45941 | Accepted: 15637 |
Description
Background The knight is getting bored of seeing the same black and white squares again and again and has decided to make a journey
around the world. Whenever a knight moves, it is two squares in one direction and one square perpendicular to this. The world of a knight is the chessboard he is living on. Our knight lives on a chessboard that has a smaller area than a regular 8 * 8 board, but it is still rectangular. Can you help this adventurous knight to make travel plans?
Problem
Find a path such that the knight visits every square once. The knight can start and end on any square of the board.
Input
Output
If no such path exist, you should output impossible on a single line.
Sample Input
3
1 1
2 3
4 3
Sample Output
Scenario #1:
A1 Scenario #2:
impossible Scenario #3:
A1B3C1A2B4C2A3B1C3A4B2C4
按照字典序输出路径,方向要按照字典序来搜索。
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
using namespace std;
bool v[][];
int p, q;
int dir[][] = {{-,-},{-,},{-,-},{-,},
{,-},{,},{,-},{,}};
int px[], py[];
int step, flag;
char R[] = {'A','B','C','D','E','F','G','H'}; int dfs(int x, int y, int step)
{
if (step == p*q) {
flag = ;
for (int i = ; i < p*q; i++) {
printf("%c%d", R[px[i]],py[i]+);
}
printf("\n\n");
return ;
} int nx, ny;
for (int i = ; i < ; i++) {
nx = x + dir[i][];
ny = y + dir[i][];
if (!v[nx][ny] && nx>= && nx<q && ny>= && ny<p) {
v[nx][ny] = ;
px[step] = nx; py[step] = ny;
dfs(nx, ny, step+);
if (flag) return ; //只搜索一次
v[nx][ny] = ;
}
}
return ;
} int main()
{
//freopen("1.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int T;
int t = ;
cin >> T;
while (T--) {
cin >> p >> q;
printf("Scenario #%d:\n", ++t);
memset(v, , sizeof(v));
px[] = ; py[] = ;
v[][] = ;
flag = ;
step = ;
if(!dfs(, , ))
printf("impossible\n\n");
} return ;
}
[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(DFS)
A Knight's Journey Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 34633Accepted: 11815 De ...
- POJ 2488 A Knight's Journey(深搜+回溯)
A Knight's Journey Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) ...
- poj 2488 A Knight's Journey 【骑士周游 dfs + 记忆路径】
题目地址:http://poj.org/problem?id=2488 Sample Input 3 1 1 2 3 4 3 Sample Output Scenario #1: A1 Scenari ...
- poj 2488 A Knight's Journey( dfs )
题目:http://poj.org/problem?id=2488 题意: 给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径. #include <io ...
- POJ 2488 A Knight's Journey (回溯法 | DFS)
题目链接:http://poj.org/problem?id=2488 题意: 在国际象棋的题盘上有一个骑士,骑士只能走“日”,即站在某一个位置,它可以往周围八个满足条件的格子上跳跃,现在给你一个p ...
- POJ 2488 A Knight's Journey【DFS】
补个很久之前的题解.... 题目链接: http://poj.org/problem?id=2488 题意: 马走"日"字,让你为他设计一条道路,走遍所有格,并输出字典序最小的一条 ...
- POJ 2488 A Knight's Journey (DFS)
poj-2488 题意:一个人要走遍一个不大于8*8的国际棋盘,他只能走日字,要输出一条字典序最小的路径 题解: (1)题目上说的"The knight can start and end ...
- 搜索 || DFS || POJ 2488 A Knight's Journey
给一个矩形棋盘,每次走日字,问能否不重复的走完棋盘的每个点,并将路径按字典序输出 *解法:按字典序输出路径,因此方向向量的数组按字典序写顺序,dfs+回溯,注意flag退出递归的判断,并且用pre记录 ...
随机推荐
- Objective-c中的delegate浅析
delegate初探 在ios开发中,我们常常会用到类似例如以下的对话框: 因此,例如以下这段代码我们也就非常熟悉了: - (IBAction)showSheet:(id)sender { UIAct ...
- c#中多线程写DataGridView出现滚动栏导致程序卡死(无响应)的解决的方法
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013529927/article/details/24225567 由于写的程序涉及到多线程维护一 ...
- Java语言基础(回头复习)
/* 使用变量的时候要注意的问题: A:作用域 变量定义在哪个大括号内,它就在这个大括号内有效. 并且,在同一个大括号内不能同时定义同名的变量. B:初始化值 没有初始化值的变量不能直接使用. 你只要 ...
- gradlew tasks
D:\AndroidWorkSpace\Qi\LocalM>gradlew tasks > Configure project : AAAA > Configure project ...
- 后端CORS解决跨域问题
一 . 为什么会有跨域问题 是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不是所有的请求都给做跨域,像是一般的href 属性,a标签什么的都不拦截. 二 . 解决跨域的方法 解决跨域有两种方法 ...
- 移动端 (H5) 调试工具 -- vconsole
最近在改一个移动端项目,在手机上调试贼头疼,什么日志都看不到,分析不了bug问题. 然后我同事给我介绍了一个移动端的调试神器 -- vconsole 有了这个神器,领导再也不用担心我的工作啦!!! 0 ...
- 【转】BigInteger、BigDecimal详解
参考 http://lavasoft.blog.51cto.com/62575/228705/ 从Java4到Java5,Java对BigInteger.BigDecimal两个类功能一直再做扩展与改 ...
- oracle 数据库常用数据表操作
在oracle中创建sequence CREATE SEQUENCE sequence名称 MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCRE ...
- MSSQL2005外网IP的1433端口开启方法
打开SQL Server Configuration Manager,在SQL server配置管理器展开SQL server 2005网络配置-->SQLEXPRESS 的协议-->双击 ...
- 9.1 NOIP普及组试题精解(3)
9-6 seat.c #include <stdio.h> #define MAXN 1001 void swap(int *a, int *b) //交换数据 { int t; t = ...