A Knight's Journey

 

大意:

给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径。

 1 #include <map>
 2 #include <stack>
 3 #include <queue>
 4 #include <math.h>
 5 #include <stdio.h>
 6 #include <string.h>
 7 #include <iostream>
 8 #include <limits.h>
 9 #include <algorithm>
10 #define LL long long
11 #define min(a,b) (a>b?b:a)
12 #define max(a,b) (a>b?a:b)
13 #define eps 1e-9
14 #define INF 1 << 30
15 using namespace std;
16
17 bool vis[30][30], output;
18 int Num;
19 char path[120];
20 int dx[8] = {-2, -2, -1, -1, 1, 1, 2, 2};
21 int dy[8] = {-1, 1, -2, 2, -2, 2, -1, 1};
22 int a, b;
23
24 void Dfs(int depth, int x, int y)
25 {
26     if(depth == Num)
27     {
28         for(int i = 0; i < 2*depth; i++)
29             printf("%c", path[i]);
30         printf("\n\n");
31         output = true;
32         return ;
33     }
34     for(int i = 0; i < 8 && output == false; i++)
35     {
36         int new_x = x+dx[i];
37         int new_y = y+dy[i];
38         if(new_x >= 1 && new_x <= b && new_y >= 1 && new_y <= a && vis[new_y][new_x] == false)
39         {
40             vis[new_y][new_x] = true;
41             path[2*depth] = 'A'+new_x-1;
42             path[2*depth+1] = '1'+new_y-1;
43             Dfs(depth+1, new_x, new_y);
44             vis[new_y][new_x] = false;
45         }
46     }
47 }
48
49 void run()
50 {
51     int n;
52     scanf("%d", &n);
53     for(int p = 1; p <= n; p++)
54     {
55         scanf("%d%d", &a, &b);
56         printf("Scenario #%d:\n", p);
57         for(int i = 1; i <= a; i++)
58             for(int j = 1; j <= b; j++)
59                 vis[i][j] = false;
60         Num = a*b;
61         output = false;
62         vis[1][1] = true;
63         path[0] = 'A';
64         path[1] = '1';
65         Dfs(1, 1, 1);
66         if(output == false)
67             printf("impossible\n\n");
68     }
69 }
70
71 int main(void)
72 {
73     run();
74
75     return 0;
76 }

A Knight's Journey

转载于:https://www.cnblogs.com/Silence-AC/p/3465192.html

POJ 2488 A Knight's Journey (棋盘DFS)相关推荐

  1. POJ 2488 - A Knight‘s Journey + Python

    这是一个深度优先搜索DFS题目. 原题连接:2488 -- A Knight's Journey 参考资料:POJ 2488 - A Knight's Journey | 眈眈探求 参考资料:POJ2 ...

  2. poj - 2488 A Knight's Journey

    走马步,求能否遍历棋盘上所有格,如能,按最小字典序输出路径. 做这题时我又看了下以前写的poj 2676,把代码又改进了下. 1 #include <stdio.h> 2 #include ...

  3. POJ 2488 A Knight's Journey

    题意:给一个n×m的棋盘,如果一个骑士可以从任意一个位置出发不重复的走遍棋盘的每个格子就输出字典序最短的路径. 解法:dfs.暴搜n×m次,只是被字典序输出坑了--而且字母是列序号数字是行序号--这两 ...

  4. POJ2488 A Knight's Journey(DFS)

    题意: 输入一些棋盘对应的行和列,看骑士(日字)能不能走完整个棋盘,可以从任何地方开始,注意要字典序输出 要点: 虽然说骑士可以从棋盘上任意一点出发,但因为要按字典序(lexicographicall ...

  5. TOJ 1702.A Knight's Journey

    2015-06-05 问题简述: 有一个 p*q 的棋盘,一个骑士(就是中国象棋里的马)想要走完所有的格子,棋盘横向是 A...Z(其中A开始 p 个),纵向是 1...q. 原题链接:http:// ...

  6. A Knight‘s Journey(POJ-2488)

    A Knight's Journey 题目 题目大意 题目思路 代码 题目 Description Background The knight is getting bored of seeing t ...

  7. OpenJudge NOI 2.5 1490:A Knight‘s Journey

    [题目链接] OpenJudge NOI 2.5 1490:A Knight's Journey 疑问:题目说可以从任意点出发,以任意点结束.为什么我看他人的代码中,只写从(1,1)出发的情况也能过呢 ...

  8. 【poj 2488】A Knight's Journey 中文题意题解代码(C++)

    题目链接: http://poj.org/problem?id=2488 中文题意: 给出一个p行q列的国际棋盘,马可以从任意一个格子开始走,问马能否不重复的走完所有的棋盘.如果可以,输出按字典序排列 ...

  9. Poj(2488),按照字典序深搜

    题目链接:http://poj.org/problem?id=2488 思路:按照一定的字典序深搜,当时我的想法是把所有的可行的路径都找出来,然后字典序排序. 后来,凡哥说可以在搜索路径的时候就按照字 ...

最新文章

  1. MVC 之 架构的基本原理及Asp.Net实现MVC
  2. [转]HOWTO do Linux kernel development - take 3 (中文版)
  3. python头文件math.h_将常量从.h文件导入到python中
  4. c语言里的宏(翻译)4
  5. iPhone 12全球销量超过1亿部 研究机构称在4月份就已超过
  6. 如何分析竟争网站和优秀网站的设计风格
  7. 7. 查看当前库状态
  8. Echert 缩放后切换再数据,缩放大小没还原的解决办法
  9. 重装助手教你如何在Windows中正确调整屏幕分辨率设置
  10. 带你走进CoDeSys
  11. 计算机金融专业排行榜,2020金融学专业大学排名 中国金融专业大学100强
  12. 【spring_Cloud】java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud
  13. 从区块链到DAG(五)--DAG项目介绍IOTA和Obyte
  14. Oracle函数之LAG函数
  15. 【逗老师带你学IT】Windows Server NPS服务构建基于AD域控的radius认证
  16. ettercap文本模式+driftnet监控图片瑞星防火墙无效
  17. 莫队入门例题:2038: [2009国家集训队]小Z的袜子(hose)
  18. 从项目管理角度看马谡失街亭
  19. 何钦铭版C语言第3章答案,何钦铭版c语言第3章答案(17页)-原创力文档
  20. 中汽协确认参加2023EVH新能源动力总成年会

热门文章

  1. oracle收集统计计划,oracle收集统计信息之analyze
  2. vue渲染大量数据如何优化_Vue - Table表格渲染上千数据优化
  3. linux代码中能出现中文吗_Linux命令很熟悉,你知道它们的英文全称和中文解释吗?...
  4. matlab高斯消去,高斯消去、追赶法 matlab
  5. mybatis实体类注解_SpringBoot2.x系列教程43--整合使用Mybatis
  6. linux ssh Unused,ssh免密码登录 - leopardlinux的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 查看mysql数据库服务_MySQL数据库之mysql5.7基础 查看mysql的服务状态
  8. TCP/IP学习入门笔记
  9. 怎么将一个十进制数转化为二进制数并打印出来
  10. 发布国内首个无服务器容器服务,运维效率从未如此高效