poj 2488( 搜索 )
来源:互联网 发布:手机淘宝装修 编辑:程序博客网 时间:2024/06/06 04:03
A Knight's Journey
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 19442 Accepted: 6549
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
Source
TUD Programming Contest 2005, Darmstadt, Germany
题目类型:搜索
题目描述:用骑士的走路方式,找到一条路径。这条路径上有棋盘上所有的点而且每个点只经过一次。
题目分析:没翻译好,原来路径需要字典序。调整一下方向数组就ok了。
代码如下:
#include <stdio.h>#include <string.h>#define N 26int row;int column;int map[N][N];int dx[8] = {-1,1,-2,2,-2,2,-1,1};int dy[8] = {-2,-2,-1,-1,1,1,2,2};struct Point{ int x; int y;} way[N*N];void init(){ memset(map,0,sizeof(map));}void show(){ int i; for( i = 0; i < row*column; i++) { printf("%c%d",way[i].y+'A',way[i].x+1); } printf("\n");}int dfs(int x,int y,int level){ int i,nx,ny; if( level == row * column) { show(); return 1; } for( i = 0; i < 8; i++){ nx = x + dx[i]; ny = y + dy[i]; if( nx >= 0 && nx < row && ny >=0 && ny < column && map[nx][ny] == 0){ map[nx][ny] = 1; way[level].x = nx; way[level].y = ny; if ( dfs(nx,ny,level+1) ) { return 1; } map[nx][ny] = 0; } } return 0;}int main(){ int t,i,j,flag,c = 0; scanf("%d",&t); while(t--){ scanf("%d%d",&row,&column); init(); printf("Scenario #%d:\n",++c); flag = 0; for( i = 0; i < row; i++){ for( j = 0; j < column; j++){ map[i][j] = 1; way[0].x = i; way[0].y = j; if ( dfs(i,j,1) ){ flag = 1; break; } map[i][j] = 0; } } if(flag == 0) { printf("impossible\n"); } printf("\n"); } return 0;}
- poj 2488( 搜索 )
- poj 2488 搜索
- poj 2488 简单的搜索
- POJ——2488(深度搜索)
- Poj 2488 A Knight's Journey(搜索)
- POJ 2488 A Knight's Journey 搜索
- !POJ 2488 dfs--按顺序搜索
- POJ 2488 A Knight's Journey 搜索
- POJ 2488 A Knight's Journey 搜索
- POJ搜索题目总结
- POJ 2976 参数搜索
- 简单搜索1979@POJ
- 广度搜索-POJ 1753
- POJ搜索题目
- POJ - 1011 搜索剪枝
- POJ 搜索题
- poj搜索汇总
- poj 1411(搜索+剪枝)
- php fckeditor 上传文件(或图片)中文显示为乱码的解决方法(两种方法)
- SRM527 275 DP
- 设计模式之03抽象工厂模式(笔记)
- JAVA类库分析之Vector
- 一些常用的字符转换
- poj 2488( 搜索 )
- Harmonic map
- JVM性能调优
- HashMap,LinkHashMap和TreeMap的区别及适用范围简单记录
- git ssh远程登录
- 显示当前进程
- java常用类库-正则表达式【1】
- Ubuntu常用配置
- js的escape函数