回溯与搜索 四 跳马问题

简介: 回溯与搜索 四 跳马问题

跳马问题

在5*5格的棋盘上,有一只中国象棋的马,从(1,1)点出发,按日字跳马,它可以朝8个方向跳,但不允许出界或跳到已跳过的格子上,要求在跳遍整个棋盘。

输出前5个方案及总方案数。

输出格式示例:

1  16  21  10  25

20  11  24  15  22

17  2  19  6  9

12  7   4  23  14

3  18  13  8   5

1. #include<iostream>
2. #include<cstdio>
3. #include<iomanip>
4. using namespace std;
5. int X[8]={1,2,2,1,-1,-2,-2,-1};
6. int Y[8]={-2,-1,1,2,2,1,-1,-2};
7. int a[100][100]={0},num=0;
8. bool b[100][100]={0};
9. void print()
10. {
11.   num++;
12.   if(num<=5){
13.     for(int k=1;k<=5;k++){
14.       for(int kk=1;kk<=5;kk++)
15.         cout<<setw(5)<<a[k][kk];
16.       cout<<endl;
17.     }
18.     cout<<endl;
19.   }
20. }
21. int search(int i,int j,int n)
22. {
23.   int k,x,y;
24.   if(n>25){
25.     print();
26.     return 0;
27.   }
28.   for(k=0;k<=7;k++){
29.     x=i+X[k];
30.     y=j+Y[k];
31.     if(x<=5&&x>=1&&y<=5&&y>=1&&(!b[x][y])) {
32.       b[x][y]=1;
33.       a[x][y]=n;
34.       search(x,y,n+1);
35.       b[x][y]=0;
36.       a[x][y]=0;
37.     }
38.   }
39. }
40. int main()
41. {
42.   a[1][1]=1;
43.   b[1][1]=1;
44.   search(1,1,2); 
45.   cout<<num<<endl;
46.   return 0;
47.  }

 

相关文章
|
人工智能 PyTorch 算法框架/工具
|
机器学习/深度学习 数据采集 人工智能
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(上)
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(上)
1500 0
|
3月前
|
传感器 监控 安全
HarmonyOS NEXT 5.0 的星闪(NearLink)开发应用案例
V哥分享HarmonyOS NEXT 5.0星闪开发实战,涵盖智能车钥匙无感解锁与工业传感器监控。低延迟、高可靠,代码完整,速来学习!
631 0
|
存储 算法 C++
【搜索算法】 跳马问题(C/C++)
【搜索算法】 跳马问题(C/C++)
|
存储 安全 网络安全
云计算环境下的网络安全挑战与防护策略
【9月更文挑战第35天】随着云计算技术的飞速发展,企业和个人越来越依赖云服务来存储和处理数据。然而,这一趋势同时带来了前所未有的网络安全威胁。本文将深入探讨在云计算环境中面临的主要网络安全问题,并提出有效的防护措施。从数据加密到身份验证,再到入侵检测系统的应用,我们将一一剖析,旨在为读者提供一套全面的云计算安全解决方案。
|
10月前
|
机器学习/深度学习 人工智能 PyTorch
DeepSeek开源周第四弹之一!DualPipe:训练V3/R1的双向流水线并行技术,计算与训练完全重叠,训练效率提升200%
DeepSeek 开源的 DualPipe 技术通过双向流水线并行设计,显著提升大规模深度学习模型的训练效率,优化计算与通信重叠,降低内存峰值需求,适用于推理加速、多模态数据处理等场景。
785 1
DeepSeek开源周第四弹之一!DualPipe:训练V3/R1的双向流水线并行技术,计算与训练完全重叠,训练效率提升200%
|
存储 C++
【C++】二叉搜索树(BST)
二叉搜索树(Binary Search Tree, BST)是一种特殊的二叉树,其每个节点的左子树所有节点值小于该节点值,右子树所有节点值大于该节点值,且左右子树也均为二叉搜索树。BST支持高效的数据查找、插入和删除操作,时间复杂度通常为O(log n)。本文档详细介绍了BST的基本概念、存储结构及其实现,包括迭代和递归两种方式的查找、插入、删除等操作的具体代码示例。
418 3
|
算法 C++
【洛谷 P1090】[NOIP2004 提高组] 合并果子(贪心算法+哈夫曼编码+优先队列)
该编程题目要求设计算法,将不同种类的果子合并成一堆,使得消耗的体力最小。给定果子种类数`n`(1至10000)和每种果子的数量,需输出合并的最小体力值。使用优先队列(最小堆),每次取出两个数量最少的果子堆合并,并更新总体力消耗。样例输入为3种果子(1, 2, 9),输出最小体力耗费为15。提供的AC代码采用C++实现,通过优先队列优化合并顺序。
340 0
|
网络协议 物联网 虚拟化
|
SQL 存储 NoSQL
. NoSQL和SQL的区别、使用场景与选型比较
【7月更文挑战第30天】. NoSQL和SQL的区别、使用场景与选型比较
438 15