POJ 2488 -- A Knight's Journey(骑士游历)
POJ 2488 -- A Knight's Journey(骑士游历)
题意:
给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径。
经典的“骑士游历”问题
输入:第一行,整数n,接下来是n行,每一行为p和q,p为行数,q为列数,p用1...p编号,q用A...Q编号
马的走法:每步棋先横走或直走一格,然后再往外斜走一格;或者先斜走一格,最后再往外横走或竖走一格(即走"日"字)。可以越子,没有中国象棋中的"蹩马腿"限制。
解题思路:
dfs
#include<iostream>
#include<cstring>
using namespace std;
int r,c;///行r,列c const int dr[] = {-, ,-, ,-,,-,};
const int dc[] = {-,-,-,-, ,, ,};
bool chess[]['Z'+]; struct square{
int row;
char col;
}; bool inside(int x,int y)
{
return x>= && x<=r && y>='A' && y<='A'+c-;
} bool dfs(square *way,int i,int j,int step)
{
chess[i][j]=true;
way[step].row=i;
way[step].col=j;
if(step==r*c)
return true; for(int k=;k<;k++) //骑士从当前位置尝试跳到其他位置
{
int ii,jj;
ii = i+dr[k];jj = j+dc[k];
if(!chess[ii][jj] && inside(ii,jj))
if(dfs(way,ii,jj,step+))
return true;
} chess[i][j]=false; //能执行到这步,说明前面跳的8步都不符合要求
return false; //即当前位置是错误位置,擦除记录返回上一步
} int main()
{
int n;
cin>>n;
for(int i=;i<=n;i++)
{
cin>>r>>c;
bool flag = false;
memset(chess,false,sizeof(chess));
square *way = new square[r*c+];
for(int i='A';i<='A'+c-;i++)
{
for(int j=;j<=r;j++)
{
flag = dfs(way,j,i,);
if(flag)
break;
}
if(flag)
break;
} ///打印解
cout<<"Scenario #"<<i<<":"<<endl;
if(flag)
{
for(int k=;k<=r*c;k++)
cout<<way[k].col<<way[k].row;
cout<<endl<<endl;
}else{
cout<<"impossible"<<endl<<endl;
} }
return ;
}

POJ 2488 -- A Knight's Journey(骑士游历)的更多相关文章
- 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)
		
A Knight's Journey Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 34633Accepted: 11815 De ...
 - 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 题意: 在国际象棋的题盘上有一个骑士,骑士只能走“日”,即站在某一个位置,它可以往周围八个满足条件的格子上跳跃,现在给你一个p ...
 - poj 2488 A Knight's Journey( dfs )
		
题目:http://poj.org/problem?id=2488 题意: 给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径. #include <io ...
 - Poj 2488 A Knight's Journey(搜索)
		
Background The knight is getting bored of seeing the same black and white squares again and again an ...
 - [poj]2488 A Knight's Journey dfs+路径打印
		
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 45941 Accepted: 15637 Description Bac ...
 - POJ 2488 A Knight's Journey【DFS】
		
补个很久之前的题解.... 题目链接: http://poj.org/problem?id=2488 题意: 马走"日"字,让你为他设计一条道路,走遍所有格,并输出字典序最小的一条 ...
 - POJ 2488  A Knight's Journey
		
题意:给一个n×m的棋盘,如果一个骑士可以从任意一个位置出发不重复的走遍棋盘的每个格子就输出字典序最短的路径. 解法:dfs.暴搜n×m次,只是被字典序输出坑了……而且字母是列序号数字是行序号……这两 ...
 
随机推荐
- AS中Git操作和Git工作流
			
查阅并学习安卓中如何使用Git,并扩展学了下Gitflow工作流程,以下是我觉得有用,系统,详细的相关文章. AS中Git操作系列 https://www.jianshu.com/p/0cc226ee ...
 - kolla-ansible 部署多region
			
目录 kolla-ansible 部署多region 一.前言 二.部署架构 三.部署细节 1.部署RegionOne 2.部署RegionTwo kolla-ansible 部署多region 一. ...
 - Win10系统C盘空间不足怎么安全清理?
			
我们在使用电脑时,系统经常会产生许多垃圾文件,占用磁盘存储空间.在Win10系统中,我们可以通过清理系统盘的临时文件来释放一些存储空间.下面好系统U盘启动就来告诉你具体的方法步骤. Win10系统C盘 ...
 - idea的使用问题解决
			
IDEA集成SVN插件,用的是TortoiseSVN,SVN上明明有别人提交的内容,但是我这里点击Incoming确显示不出来 解决方案:file->Invalidate Cache/Resta ...
 - identity server4获取token和userInfo
			
一.简介 IdentityServer4(ids4)是用于ASP.NET Core的OpenID Connect和OAuth 2.0框架.在许多成熟的.net core框架中都完美的集成的该身份服务框 ...
 - 4.caffe:train_val.prototxt、 solver.prototxt 、 deploy.prototxt( 创建模型与编写配置文件)
			
一,train_val.prototxt name: "CIFAR10_quick" layer { name: "cifar" type: "Dat ...
 - git远程分支创建,本地分支关联远程分支,第一次发布、更新分支
			
git远程分支创建,本地分支关联远程分支,第一次发布.更新分支 github托管服务器地址为https://github.com git提交更新代码示意图: 本地与远程进行免密码配置(本地与远程关联) ...
 - 端口与服务-ftp服务
			
端口与服务-ftp服务 1概述 1.1.从先知和乌云上爬取端口历史漏洞报告,总结报告 1.2.全面总结,出具一个表格之类的汇总表 2.ftp # -*- coding: utf-8 -*- impor ...
 - Python 基础知识 (1) 持续更新
			
(1)数字和表达式 当进入Python交互式的时候,Python就可以直接当成计算机使用 如 >>> 2 + 2 4 但是 当 1个整数 和 另外一个整数 相除的时候,计算的结果,只 ...
 - ubuntu 16.04中文输入法安装
			
转自: http://blog.csdn.net/u011795345/article/details/53041707 最近刚给笔记本装了Ubuntu+win10双系统,但是ubuntu16.04没 ...