资源简介
带蹩马腿功能的马踏棋盘程序,运用了带有回溯功能的递归函数输出所有的路径。运行时间可能较长,打印输出所有的情况需要等待一定的时间。
代码片段和文件信息
#include
#include
#include
#pragma warning(disable:4996)//头文件及宏定义
#define MAXN 10//棋盘的最大尺寸
#define STALL_PIECE 123//蹩马腿棋子
int board[MAXN][MAXN] = { 0 };//初始化棋盘
int moveHorizental[8] = { 21-1-2-2-112 };
int moveVertical[8] = { 1221-1-2-2-1 };//定义马移动的八种方式
int stallPieceNumber;//蹩马腿棋子的数目
/*
功能:检查输入是否符合规范
传入参数:马的横纵坐标 棋盘的大小
返回参数:bool数据类型
*/
bool Check(int x int y int N)
{
if (x < 0 || x >= N || y < 0 || y >= N || board[x][y] != 0) //检查输入坐标是否在棋盘内以及该位置是否已经被走过或有蹩马腿棋子占用
return false;//输入不符合规范
return true;//输入符合规范
}
/*
功能:判断是否被蹩马腿
传入参数:当前位置 下一个位置
返回参数:bool数据类型
*/
bool IsStalled(int currentX int currentY int nextX int nextY)
{
bool flag = false;//有没有被蹩马腿的标志
int deltX = nextX - currentX;
int deltY = nextY - currentY;//计算位置的变化量
bool pieces[4] = { false };//初始假设四个方向均未被蹩马腿
if (board[currentX - 1][currentY] == STALL_PIECE)
pieces[0] = true;//左侧有棋子
else if (board[currentX][currentY + 1] == STALL_PIECE)
pieces[1] = true;//下方有棋子
else if (board[currentX + 1][currentY] == STALL_PIECE)
pieces[2] = true;//右侧有棋子
else if (board[currentX][currentY - 1] == STALL_PIECE)
pieces[3] = true;//上方有棋子
if (pieces[0] && abs(deltY) == 1 && deltX == -2)
flag = true;//左侧被蹩马腿
if (pieces[1] && abs(deltX) == 1 && deltY == 2)
flag = true;//下方被蹩马腿
if (pieces[2] && abs(deltY) == 1 && deltX == 2)
flag = true;//右侧被蹩马腿
if (pieces[3] && abs(deltX) == 1 && deltY == -2)
flag = true;//上方被蹩马腿
return flag;//返回是否被蹩马腿
}
/*
功能:寻找马踏棋盘的路径
传入参数:马的当前位置坐标 棋盘大小 走的步数
返回参数:无
*/
void HorseTraversal(int thisX int thisY int N int stepNumber)
{
int i;//循环控制变量
int nextX nextY;//马的下一个位置的坐标
for (i = 0; i
- 上一篇:基于C语言的短信pdu的编码解码所有资料
- 下一篇:数据结构课设——作业管理系统
相关资源
- C语言面试笔试题,经典题目
- C语言编程常见问题解答.pdf
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
评论
共有 条评论