POJ 2488 A Knight's Journey题解
来源:互联网 发布:高性能并发网络框架 编辑:程序博客网 时间:2024/06/06 09:39
A Knight's JourneyTime Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Description
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
31 12 34 3
Sample Output
Scenario #1:A1Scenario #2:impossibleScenario #3:A1B3C1A2B4C2A3B1C3A4B2C4
题目大意:通过输入p和q来确定一个p行q列的象棋棋盘,问:马从任意一个位置出发是否能够不重复的走遍所有棋盘上的点,(在象棋中马走日!) 因为是判断是否能够到达所有的点,所以起点是不重要的,我这里把起点设为第一行第一列,因为题目还要求按照字典序输出,所以要考虑每次移动的方向,int fx[]= {-2,-2,-1,-1,1,1,2,2}; int fy[]= {-1,1,-2,2,-2,2,-1,1}; 通过fx【】和fy【】来确定移动位置
上代码:
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int p,q,vis[110][110],path[110][110];
int flag;
int fx[]= {-2,-2,-1,-1,1,1,2,2};
int fy[]= {-1,1,-2,2,-2,2,-1,1};
int check(int x,int y)
{
if(x>0&&x<=q&&y>0&&y<=p&&!vis[x][y]&&!flag)
return 1;
else return 0;
}
void dfs(int x,int y,int step)
{
int i;
path[step][0]=x;
path[step][1]=y;
if(step==p*q)
{
flag=1;
return;
}
for(i=0; i<8; i++)
{
int xx=x+fx[i];
int yy=y+fy[i];
if(check(xx,yy))
{
vis[xx][yy]=1;
dfs(xx,yy,step+1);
vis[xx][yy]=0;
}
}
}
int main()
{
int T,i;
int num=1;
cin>>T;
while(T--)
{
flag=0;
cin>>p>>q;
cout<<"Scenario #"<<num++<<":"<<endl;
memset(vis,0,sizeof(vis));
vis[1][1]=1;
dfs(1,1,1);
if(flag)
{
for(i=1; i<=p*q; i++)
{
printf("%c%d",path[i][0]-1+'A',path[i][1]);
}
cout<<endl;
}
else printf("impossible\n");
cout<<endl;
}
return 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 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)
- opensuse 42.1 基本设置
- iOS 【原生API NSURLSession 网络请求(重新弄一份 格式不对!!!!!!!!!!)】
- 用SQL语句查询elasticsearch
- D - 胜利大逃亡 hdu1253
- opencv从入门到精通(2)--简单图像变换
- POJ 2488 A Knight's Journey题解
- Hadoop YARN学习之监控集群监控Nagios(4)
- MKMapView实时绘画渐变线条运动轨迹
- iOS---In-App Purchase 常见问题解答
- 蓝牙学习之旅——专业术语简述
- Socket编程
- C# 程序员最常犯的 10 个错误
- 使用Struts2验证框架实现输入校验
- 如何用消息系统避免分布式事务?