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.通过urllib库爬取http://zx.500.com/dlt/页面,并过滤出信息 2.将自己的买的彩票的号与开奖号进行匹配,查询是否中奖 3.将中奖结果发生到自己邮箱 caipia ...

  2. Linux下,为应用程序添加桌面图标(ubuntu18.4)

    一.桌面图标位置 Lniux下桌面图标储存路径为:/usr/share/applications 二.桌面图标格式 所有桌面图标格式均为desktop,即名为XXX.desktop 三.编辑内容(常用 ...

  3. 阿里P8Java大牛仅用46张图让你弄懂JVM的体系结构与GC调优。

    本PPT从JVM体系结构概述.GC算法.Hotspot内存管理.Hotspot垃圾回收器.调优和监控工具六大方面进行讲述.图文并茂不生枯燥. 此PPT长达46页,全部展示篇幅过长,本文优先分享前十六页 ...

  4. Vue项目中使用better-scroll

    当 better-scroll 遇见 Vue   在我们日常的移动端项目开发中,处理滚动列表是再常见不过的需求了. 以滴滴为例,可以是这样竖向滚动的列表,如图所示: 也可以是横向滚动的导航栏,如图所示 ...

  5. F#周报2019年第32期

    新闻 推出FSharp.Core 4.7,附带netstandard2支持 ML.NET 1.3.1发布 FSharp.SystemTextJson宣告:对于.NET Core的System.Text ...

  6. Linux:oracle11.2.0dbca静默建库

    1.关闭防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall ...

  7. 树莓派dht11,土壤湿度传感器,继电器的使用。树莓派云灌溉(二)

    关于传感器的一些说明 我的想法是这样的 我尽量用易于理解的语言去说我的想法 首先,土壤湿度传感器和dh11会获取数据,然后树莓派会处理这些数据,读出土壤温湿度和空气温湿度,并将这些数据上传到云服务器, ...

  8. 完美解决迅雷极速版强制升级到迅雷X

    虽然迅雷已死,但是还是软件还是有点点用的.废话不好多说,直接上解决办法: 1. 找到桌面的迅雷图标,右键选择打开文件位置; 2. 根据路径找到: 相对路径:Thunder Network\Thunde ...

  9. ZooKeeper实现读写锁

    在上一篇文章,我们已经实现了分布式锁.今天更进一步,在分布式锁的基础之上,实现读写锁. 完整代码在 https://github.com/SeemSilly/codestory/tree/master ...

  10. .net必问的面试题系列之面向对象

    上个月离职了,这几天整理了一些常见的面试题,整理成一个系列给大家分享一下,机会是给有准备的人,面试造火箭,工作拧螺丝,不慌,共勉. 1.net必问的面试题系列之基本概念和语法 2.net必问的面试题系 ...