poj-2488

题意:一个人要走遍一个不大于8*8的国际棋盘,他只能走日字,要输出一条字典序最小的路径
题解:
(1)题目上说的“The knight can start and end on any square of the board.”,是个坑点,其实要走字典序最小只需从A1开始遍历就行,因为从任意一点开始,只要能遍历完整个地图,那么A1也可以;
(2)要使字典序最小,那么遍历顺序一定要注意

int dr[8]={-1,1,-2,2,-2,2,-1,1};
int dc[8]={-2,-2,-1,-1,1,1,2,2};

(3)还有一个题上说1<=p*q<=26,那么如果p=1时,q=26时,所以数组要大于26;
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn = 100;
int vis[maxn][maxn],Map[2][maxn];
int n,m,N,ans;
int flag; int dr[8]={-1,1,-2,2,-2,2,-1,1};
int dc[8]={-2,-2,-1,-1,1,1,2,2}; bool judge(int x,int y){
if(x>=1&&x<=n&&y>=1&&y<=m&&vis[x][y]==0)return true;
else return false;
} void dfs(int x,int y,int st){
Map[0][st]=x;
Map[1][st]=y;//记录路径
if(st>=N){
flag=1;//满足条件标记
for(int i=1;i<=N;i++){
printf("%c%d",Map[1][i]-1+'A',Map[0][i]);
}cout<<endl;
return;
}
for(int i=0;i<8;i++){
int dx=x+dr[i];
int dy=y+dc[i];
if(judge(dx,dy)){
Map[0][st]=x;
Map[1][st]=y;
vis[dx][dy]=1;
dfs(dx,dy,st+1);
if(flag)return;//一旦找到一组解就返回,不再进行回溯
vis[dx][dy]=0;
}
}
} int main(){
int t;
while(cin>>t){
int cas=0;
while(t--){
cin>>n>>m;
memset(vis,0,sizeof(vis));
printf("Scenario #%d:\n",++cas);
flag=0;
N=n*m;
ans=0;
vis[1][1]=1;
dfs(1,1,1);
if(!flag)cout<<"impossible\n"<<endl;
else cout<<endl;
}
}
}

POJ 2488 A Knight's Journey (DFS)的更多相关文章

  1. POJ 2488 A Knight's Journey(DFS)

    A Knight's Journey Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 34633Accepted: 11815 De ...

  2. poj 2488 A Knight's Journey( dfs )

    题目:http://poj.org/problem?id=2488 题意: 给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径. #include <io ...

  3. POJ 2488 A Knight's Journey(深搜+回溯)

    A Knight's Journey Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) ...

  4. POJ 2488 A Knight's Journey【DFS】

    补个很久之前的题解.... 题目链接: http://poj.org/problem?id=2488 题意: 马走"日"字,让你为他设计一条道路,走遍所有格,并输出字典序最小的一条 ...

  5. A Knight's Journey (DFS)

    题目: Background The knight is getting bored of seeing the same black and white squares again and agai ...

  6. POJ 2488 -- A Knight's Journey(骑士游历)

    POJ 2488 -- A Knight's Journey(骑士游历) 题意: 给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径. 经典的“骑士游历”问题 ...

  7. POJ2488-A Knight's Journey(DFS+回溯)

    题目链接:http://poj.org/problem?id=2488 A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Tot ...

  8. POJ 2488-A Knight&#39;s Journey(DFS)

    A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 31702   Accepted: 10 ...

  9. 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 ...

随机推荐

  1. 比特平面分层(一些基本的灰度变换函数)基本原理及Python实现

    1. 基本原理 在灰度图中,像素值的范围为[0, 255],即共有256级灰度.在计算机中,我们使用8比特数来表示每一个像素值.因此可以提取出不同比特层面的灰度图.比特层面分层可用于图片压缩:只储存较 ...

  2. JavaWeb——使用会话维持状态2

    在这次的例子里面,将完成一类似购物车的功能,在客户访问网站的时候,会选中自己将要购买的商品,而购物车将始终维持着商品的状态,会话将联系起选择第一个商品(第一个请求),选择其他商品(其他请求)以及付款等 ...

  3. android ——ListView

    谷歌官方文档的介绍:https://developer.android.com/reference/android/widget/ListView.html 显示可垂直滚动的视图集合,其中每个视图都立 ...

  4. 浅谈osi模型 三次握手 四次挥手 ddos攻击原理

    C/S B/S 架构 C:client 端 B:browser 浏览器 S:server 端 C/S架构,基于客户端与服务端之间的通信 例如:QQ,抖音,快手,微信,支付宝等等 优点:个性化设置,响应 ...

  5. spring cloud 断路器 Hystrix

    一.微服务架构中使用断路器的原因 二.代码实现 1.在Ribbon中使用短路器 1.1.引入依赖 <dependency> <groupId>org.springframewo ...

  6. 使用webpack---安装webpack和webpack-dev-server

    1.先确保安装了最新版的Node.js和NPM,并已经了解NPM的基本用法 (以下使用cmd命令行进行) 2.安装webpack (1)全局安装 $ npm install webpack -g   ...

  7. 在centos6系列vps装Tomcat8.0

    In the following tutorial you will learn how to install and set-up Apache Tomcat 8 on your CentOS 6 ...

  8. 解决多字段联合逻辑校验问题【享学Spring MVC】

    每篇一句 不要像祥林嫂一样,天天抱怨着生活,日日思考着辞职.得罪点说一句:"沦落"到要跟这样的人共事工作,难道自己身上就没有原因? 前言 本以为洋洋洒洒的把Java/Spring数 ...

  9. 用代码说话:synchronized关键字和多线程访问同步方法的7种情况

    synchronized关键字在多线程并发编程中一直是元老级角色的存在,是学习并发编程中必须面对的坎,也是走向Java高级开发的必经之路. 一.synchronized性质 synchronized是 ...

  10. MUI-页面传参数

    点击第一个页面的标签,跳转到第二个页面,把第一个页面的值也传往目标页面 现在提供两种实现方式 注意:需要在手机运行才可以,用电脑浏览器可能不支持. 第一种方式  页面已创建,通过自定义事件传值 fir ...