POJ 2488 A Knight's Journey
来源:互联网 发布:钓炸天盗号软件app 编辑:程序博客网 时间:2024/06/09 17:17
A Knight's Journey
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 40609 Accepted: 13800
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.
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
The input(投入) begins with a positive(积极的) integer(整数) n in the first line. The following lines contain n test cases. Each test case consists of a single line with two positive integers p and q, such that 1 <= p * q <= 26. This represents a p * q chessboard(棋盘), where p describes how many different square numbers 1, . . . , p exist, q describes how many different square letters exist. These are the first q letters of the Latin alphabet(字母表): A, . . .
Output
The output(输出) for every scenario(方案) begins with a line containing "Scenario #i:", where i is the number of the scenario starting at 1. Then print a single line containing the lexicographically(辞典编纂的) first path that visits all squares of the chessboard with knight moves followed by an empty line. The path should be given on a single line by concatenating(连结) the names of the visited squares. Each square name consists of a capital letter followed by a number.
If no such path exist, you should output impossible on a single line.
If no such path exist, you should output impossible on a single line.
Sample Input
31 12 34 3
Sample Output
Scenario #1:A1Scenario #2:impossibleScenario #3:A1B3C1A2B4C2A3B1C3A4B2C4
这个样例我真服了,把行列和横纵坐标弄反之后还是一样,在这么一个脑残的bug上卡了好久。。。
#include<stdio.h>#include<string.h>int xx[8] = {-1, 1, -2, 2, -2, 2, -1, 1};int yy[8] = {-2, -2, -1, -1, 1, 1, 2, 2};int vis[110][110];int n,m,flag;struct node{ int x; int y;}dian[66666];void dfs(int X,int Y,int ss){ dian[ss].x=X; dian[ss].y=Y; if(ss==n*m) { flag=1; return ; } for(int i=0;i<8;i++) { int nx=X+xx[i]; int ny=Y+yy[i]; if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&!vis[nx][ny]&&!flag) { vis[nx][ny]=1; dfs(nx,ny,ss+1); vis[nx][ny]=0; } }}int main(){ int t; scanf("%d",&t); for(int ii=1;ii<=t;ii++) { flag=0; scanf("%d%d",&n,&m); memset(vis,0,sizeof(vis)); vis[1][1]=1; dfs(1,1,1); printf("Scenario #%d:\n",ii); if(flag) { for(int i=1;i<=m*n;i++) printf("%c%d",dian[i].y+'A'-1,dian[i].x); printf("\n"); } else printf("impossible\n"); if(ii!=t) printf("\n"); } 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
- Java eclipse中无法查看源代码
- 统计字符串中:各个数字、空白字符、以及其他所有字符出现的次数
- HDOJ 5818 Joint Stacks(栈)
- HDOJ 1213 How Many Tables(并查集)
- 判断一个字符串是否为另外一个字符串左旋或右旋之后的字符串
- POJ 2488 A Knight's Journey
- 【面试】嵌入式软件与非嵌入式软件、设备驱动与裸机驱动开发区别
- 编写一个函数,可以左旋字符串中k个字符
- 在字符串中找出第一个只出现一次的字符
- 字符串操作函数、数学函数
- 二维数组中的查找,杨氏矩阵
- SSM编辑时数据无法保存到数据库里
- 冒泡排序
- 找出一组数中只出现一次的两个数,其他所有数都是成对出现的