求马跳棋盘踏满5*5的国际象棋棋盘有多少种解法?
题目如图所示。
#include<iostream>
#include<cstdio>
#define D 8
#define N 5
using namespace std;int chessboard[N][N];
int chessboard_copy[N][N];
int step[N*N+1];
int step_num=0, result=0, flag=1;
static int dx[D]={-2, -1, 1, 2, 2, 1, -1, -2};
static int dy[D]={1, 2, 2, 1, -1, -2, -2, -1};void show01()
{cout<<"按5*5棋盘格式输出:"<<endl;int i, j;for(i=0; i<N; ++i){for(j=0; j<N; ++j)printf("%-2d ", chessboard[i][j]);cout<<endl;}cout<<endl;
}void show()
{cout<<"按题目要求输出:"<<endl;int i;cout<<"{ ";for(i=1; i<=N*N; ++i)printf("[%d,%d] ", i, step[i]);cout<<" }"<<endl<<endl;
}void horse(int x, int y)
{if(x>=0 && x<N && y>=0 && y<N && chessboard[x][y]==0){//为了按题目输出,step_num是第几步,chessboard_copy[x][y]是棋盘标号step[++step_num] = chessboard_copy[x][y];//标记棋盘被访问chessboard[x][y] = step_num;if(step_num == N*N){if(flag){show01();show();}//题目要求只输出一个解flag = 0;result++;}int i;for(i=0; i<D; ++i){horse(x+dx[i], y+dy[i]);}//回溯chessboard[x][y] = 0;--step_num;}}int main()
{int i, j;//初始化棋盘副本的编号for(i=0; i<N; ++i)for(j=0; j<N; ++j)chessboard_copy[i][j] = i*N+j+1;horse(0, 0);cout<<"总共解的种数为:"<<result<<endl;return 0;
}
求马跳棋盘踏满5*5的国际象棋棋盘有多少种解法?相关推荐
- php国际象棋棋盘,php趣味编程 - php输出国际象棋棋盘 - 小徐
php趣味编程 - php输出国际象棋棋盘 /* 输出国际象棋棋盘 1来代表黑色的格子 2来代表白色的格子 8*8格子 1 2 1 2 1 2 1 2 2 1 2 1 2 1 2 1 1 2 1 2 ...
- python绘制8×8棋盘_python图形工具turtle绘制国际象棋棋盘
本文实例为大家分享了python图形工具turtle绘制国际象棋棋盘的具体代码,供大家参考,具体内容如下 #编写程序绘制一个国际象棋的棋盘 import turtle turtle.speed(30) ...
- python画国际象棋棋盘图片_python使用turtle绘制国际象棋棋盘
本文实例为大家共享了python使用turtle画国际象棋棋盘的详细代码,供大家参考,详细内容如下 使用的方法是每一个小格每一个小格的画 import turtle for i in range(8) ...
- php国际象棋棋盘,php趣味编程 - php输出国际象棋棋盘
php趣味编程 - php输出国际象棋棋盘 /* 输出国际象棋棋盘 1来代表黑色的格子 2来代表白色的格子 8*8格子 1 2 1 2 1 2 1 2 2 1 2 1 2 1 2 1 1 2 1 2 ...
- python创建棋盘矩阵_python使用turtle绘制国际象棋棋盘
本文实例为大家分享了python使用turtle画国际象棋棋盘的具体代码,供大家参考,具体内容如下 使用的方法是每一个小格每一个小格的画 import turtle for i in range(8) ...
- 棋盘代码_【案例】 绘制国际象棋棋盘?(turtle 登场)
案例介绍 今天我们来用 turtle 画一个国际象棋棋盘,大小为 8x8. 国际象棋棋盘 turtle 绘图(海归绘图)很适合用来引导孩子学习编程,请想象绘图区有一只机器海龟,起始位置在 x-y 平 ...
- 【案例】绘制国际象棋棋盘?(turtle 登场)
文章目录 案例介绍 准备工作 细节设计 代码汇总 运行结果 后记 参考资料 案例介绍 今天我们来用 turtle 画一个国际象棋棋盘,大小为 8x8. 国际象棋棋盘 turtle 绘图(海归绘图)很适 ...
- 硬币找钱问题,求所有可能解决方案数目,最少的钱币数目,每种钱币用多少张
[题目简介] 现存在一堆面值为 V1.V2.V3 - 个单位的硬币,一共有多少种找钱方法可以找出总值为 T 个单位的零钱?最少需要多少张钱币?在最少钱币数目找钱的条件下,每种钱币使用的次数是多少?假设 ...
- 回溯法 之 马周游(马跳日)问题
回溯法的应用很多,下面讲述一个有趣的马周游问题. 马周游(马跳日)问题:在一个 8*8 的棋盘上(如下图)一匹马从任意位置开始,恰好走过棋盘中的每一格(每个格子有且只能走一次),并且最后还可以回到起点 ...
最新文章
- pytorch adam 源码 关于优化函数的调整 optimizer 调参 重点
- 7 Java Performance Metrics to Watch After a Major Release--转
- python的读取纯文本文件的几种模式
- int main() 与 void main()
- python编程常见小技巧
- SpringBoot2.1.5 (9)--- GET 请求
- AX2009 的EP开发要点
- input标签里面的文字位置
- java并发令牌机制,redis令牌机制实现秒杀
- 树形$dp$学习笔记
- 为什么每天扣我50无忧币?
- scratch冬天下雪了 电子学会图形化编程scratch等级考试三级真题和答案解析2022年3月
- 计算机网络原理 谢希仁(第8版)第二章习题答案
- jsp代码编写简单的BBS论坛项目的总结
- 射极跟随器实验报告数据处理_实验五射极跟随器实验报告.doc
- QT5使用PCAN读取CAN数据
- python之dataframe写excel合并单元格_python之DataFrame实现excel合并单元格
- pdf 电子签章 java_在pdf上加盖电子签章
- 文章《Deep Image Homography Estimation》
- 1-STM32嵌入式开发环境的搭建——IAR FOR ARM环境的搭建及破解教程
热门文章
- 十六进制转化为ASCII码引起的的进制的故事
- LeetCode 874 题解
- 上海服务器 微信平台,微信公众平台服务器 fastweixin
- linux改变文件所有者命令
- 《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:04 预处理
- Java设计模式之(四)——原型模式
- java毕业生设计大学生健康管理系统计算机源码+系统+mysql+调试部署+lw
- 计算机系统结构自考真题解析,计算机系统结构自考2015年4月真题
- emboss 安装使用
- html5相册瀑布背景,HTML5使用canvas实现代码流瀑布的方法