当前位置: 首页 > news >正文

东方博宜OJ 1362:马的遍历 ← DFS

【题目来源】
https://oj.czos.cn/p/1362

【题目描述】
中国象棋半张棋盘如图 (a) 所示。马自左下角往右上角跳。
boyi1362
今规定只许往右跳,不许往左跳,且要求马跳的方式按照 (b) 图顺时针深度优先递归。比如图 (a) 中所示为一种跳行路线。如果马要从 (0, 0) 点,跳到 (4, 8) 点,前6种跳法的打印格式如下,请参考前 6 种跳的方式,输出马从 (0, 0) 点到 (4, 8) 点所有可能的跳的路线。

1:0,0->2,1->4,2->3,4->4,6->2,7->4,8
2:0,0->2,1->4,2->3,4->1,5->3,6->4,8
3:0,0->2,1->4,2->3,4->1,5->2,7->4,8
4:0,0->2,1->4,2->2,3->4,4->3,6->4,8
5:0,0->2,1->4,2->2,3->4,4->2,5->4,6->2,7->4,8
6:0,0->2,1->4,2->2,3->4,4->2,5->0,6->2,7->4,8

【输入格式】


【输出格式】
按要求输出路径。

【输入样例】


【输出样例】

1:0,0->2,1->4,2->3,4->4,6->2,7->4,8
2:0,0->2,1->4,2->3,4->1,5->3,6->4,8
3:0,0->2,1->4,2->3,4->1,5->2,7->4,8
4:0,0->2,1->4,2->2,3->4,4->3,6->4,8
5:0,0->2,1->4,2->2,3->4,4->2,5->4,6->2,7->4,8
6:0,0->2,1->4,2->2,3->4,4->2,5->0,6->2,7->4,8
7:0,0->2,1->4,2->2,3->3,5->2,7->4,8
8:0,0->2,1->4,2->2,3->1,5->3,6->4,8
9:0,0->2,1->4,2->2,3->1,5->2,7->4,8
10:0,0->2,1->4,2->2,3->0,4->2,5->4,6->2,7->4,8
11:0,0->2,1->4,2->2,3->0,4->2,5->0,6->2,7->4,8
12:0,0->2,1->3,3->2,5->4,6->2,7->4,8
13:0,0->2,1->3,3->2,5->0,6->2,7->4,8
14:0,0->2,1->3,3->1,4->3,5->2,7->4,8
15:0,0->2,1->3,3->1,4->0,6->2,7->4,8
16:0,0->2,1->1,3->3,4->4,6->2,7->4,8
17:0,0->2,1->1,3->3,4->1,5->3,6->4,8
18:0,0->2,1->1,3->3,4->1,5->2,7->4,8
19:0,0->2,1->1,3->2,5->4,6->2,7->4,8
20:0,0->2,1->1,3->2,5->0,6->2,7->4,8
21:0,0->2,1->0,2->2,3->4,4->3,6->4,8
22:0,0->2,1->0,2->2,3->4,4->2,5->4,6->2,7->4,8
23:0,0->2,1->0,2->2,3->4,4->2,5->0,6->2,7->4,8
24:0,0->2,1->0,2->2,3->3,5->2,7->4,8
25:0,0->2,1->0,2->2,3->1,5->3,6->4,8
26:0,0->2,1->0,2->2,3->1,5->2,7->4,8
27:0,0->2,1->0,2->2,3->0,4->2,5->4,6->2,7->4,8
28:0,0->2,1->0,2->2,3->0,4->2,5->0,6->2,7->4,8
29:0,0->2,1->0,2->1,4->3,5->2,7->4,8
30:0,0->2,1->0,2->1,4->0,6->2,7->4,8
31:0,0->1,2->3,3->2,5->4,6->2,7->4,8
32:0,0->1,2->3,3->2,5->0,6->2,7->4,8
33:0,0->1,2->3,3->1,4->3,5->2,7->4,8
34:0,0->1,2->3,3->1,4->0,6->2,7->4,8
35:0,0->1,2->2,4->3,6->4,8
36:0,0->1,2->0,4->2,5->4,6->2,7->4,8
37:0,0->1,2->0,4->2,5->0,6->2,7->4,8

【数据范围】
左下角坐标 (0, 0) 、右上角坐标 (4, 8) 。

【算法分析】
● dfs 算法通常表现为复杂的递归函数形式,因此掌握“递归”是理解 dfs 算法的基础。

● dfs 算法的常用模板,如下所示。

void dfs(int step) {判断边界 {输出解}尝试每一种可能 {满足check条件{标记继续下一步:dfs(step+1)恢复初始状态(回溯的时候要用到)}}
}

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int N=50;
int dx[]= {2,1,-1,-2},dy[]= {1,2,2,1};
int p[N][2]; //p[i][.] is i-th point's coord
int st[N][N];
int step;
int n,m;void print(int cnt) { //info of cnt pointsstep++;cout<<step<<":";for(int i=1; i<=cnt; i++) {cout<<p[i][0]<<","<<p[i][1];if(i!=cnt) cout<<"->";else cout<<endl;} //the cnt-th point's coord
}void dfs(int x,int y,int cnt) {p[cnt][0]=x, p[cnt][1]=y;if(x==4 && y==8) { //coord of destinationprint(cnt);return;}int tx,ty;for(int i=0; i<4; i++) {tx=x+dx[i];ty=y+dy[i];if(tx>=0 && tx<=4 && ty>=0 && ty<=8 && st[tx][ty]==0) {st[tx][ty]=1;dfs(tx,ty,cnt+1);st[tx][ty]=0;}}
}int main() {dfs(0,0,1);return 0;
}





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/118736059
https://blog.csdn.net/hnjzsyjyj/article/details/156323183
https://blog.csdn.net/m0_69389639/article/details/146946552



 

http://www.zskr.cn/news/165402.html

相关文章:

  • 中美技术差异分析:TensorRT在中国市场的本地化适配
  • 基于TensorRT的高性能AI服务搭建全攻略
  • Java 大视界 -- 基于 Java 的大数据实时流处理在能源行业设备状态监测与故障预测中的应用
  • 轻量级服务架构设计:TensorRT + REST API 实战
  • CSDN博客迁移:继承原有开发者社区资源
  • 【计算机毕业设计案例】Java毕设项目推荐-基于Java的医院在线挂号系统设计与实现-基于JAVA的医院预约挂号管理系统的设计与基于JAVA的医院预约挂号管理系统的设计与实现(程序+文档+讲解+定制)
  • SegmentFault问答:参与技术讨论植入产品信息
  • 数字人情感表达:基于TensorRT的情绪识别优化
  • 性能回归测试:持续验证TensorRT优化稳定性
  • 媒体公关稿撰写:扩大TensorRT品牌影响力
  • 【计算机毕业设计案例】SpringBoot+Vue项目大学生网络教学平台的设计与实现基于SpringBoot+Vue 大学生在线教育平台设计与实现(程序+文档+讲解+定制)
  • 学习Java33天(练习)
  • AtCoder Beginner Contest 438 ABCDEF 题目解析
  • 自定义校准算法:Entropy vs MinMax选择指南
  • 记录一下Ubuntu系统下的固态要挂掉的解决方案(dd命名克隆固态硬盘)
  • Java毕设项目:基于JAVA的医院预约挂号管理系统的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 公平的人工智能AI算法推荐之番茄算法推荐正式期千万不要做的8大雷点技术解析·卓伊凡
  • 华为全联接大会演讲:跨厂商合作可能性探索
  • 轻量化ssh工具Dropbear 介绍与使用说明
  • CUDA流调度:多任务并行下的TensorRT性能调优
  • 2025自考必备!9个降AI率工具测评榜单
  • springboot_ssm 高校学生班费管理系统
  • springboot_ssmspringboot_m家用电器回收系
  • 前端新人必看:IIFE到底解决了什么问题?(附实战技巧)
  • 模型压缩终极形态:TensorRT + 知识蒸馏联合优化
  • 2025最新!专科生必看9款AI论文工具测评与推荐
  • GitHub项目托管:公开示例代码促进传播
  • 4次拷贝变0次:我用现代C++撸了个生产级零拷贝缓存
  • Java毕设项目:基于Springboot+Vue的电子商务订单管理系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • 论文AI率超标怎么办?学生必看的十大降AI率工具合集