1 / 13
文档名称:

试验报告马踏棋盘.docx

格式:docx   大小:49KB   页数:13页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

试验报告马踏棋盘.docx

上传人:0640105 2022/7/23 文件大小:49 KB

下载得到文件列表

试验报告马踏棋盘.docx

相关文档

文档介绍

文档介绍:
题目:设计一个国际象棋的马踏棋盘的演示程序
班级:姓名:学号:完成日期:

(1)输入的形式和输入值的范围:输入马的初始行坐标 X和列坐标Y,
X和Y的范围都是[1,8] o
(2)输出形式:
以几个临时数组
while(top>-1) /栈不空时循环
{
for(h=0;h<8;h++) //用数组a[8]记录当前位置的下一个位置的可行路径的条数
{
number=0;
i=stack[top].i+Htry1[h];
j=stack[top].j+Htry2[h];
b1[h]=i;
b2[h]=j;
if(board[i][j]==0&&i>=0&&i<8&&j>=0&&j<8) // 如果找到下一位置
(
for(k=0;k<8;k++)
(
i1=b1[h]+Htry1[k];
j1=b2[h]+Htry2[k];
if(board[i1][j1]==0&&i1>=0&&i1<8&&j1>=0&&j1<8)
〃如果找到下一位置
number++; 记录条数
}
a[h]=number; //1条数存入数组 a[8]中
}
}
for(h=0;h<8;h++) //根据可行路径条数小到大按下表排序放 d[8]中
(
min=9;
for(k=0;k<8;k++)
if(min>a[k])
(
min=a[k];
d[h]=k; //将下表存入数组d[8]中
s=k;
a[s]=9;
director=stack[top].director;
if(top>=63) 加:果走完整个棋盘返回1
return (1);
find=0; 展示没有找到下一个位置
for(h=director+1;h<8;h++) 〃向八个方向进行探寻
{ i=stack[top].i+Htry1[d[h]];
j=stack[top].j+Htry2[d[h]];
if(board[i][j]==0&&i>=0&&i<8&&j>=0&&j<8) 〃 如果找到下一位置 {
find=1; 〃表示找到下一个位置
Break;
)
)
if(find==1) /收口果找到下一个位置进栈
{
stack[top].director=director; // 存储栈结点的方向
top++; 极指针前移进栈
stack[top].i=i;
stack[top].j=j;
stack[top].director=-1; //重新初始化下一栈结点的尝试方向
board[i][j]=top+1; //标记棋盘
否则退栈
) else
board[stack[top].i][stack[top].j]=0; // 清除棋盘的标记
top--; 腰指针前移退栈
)
)
return (0);
)
.输出路径函数模块
void Display。
{
int i,j;
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
printf("\t%d ",board[i][j]); //输出马儿在棋盘上走过的路径
printf("\n\n");
)
printf("\n");
)
四、测试数据及测试结果
测试数据:x=2,y=3 测试结果如下:

#include<>
#define MAXSIZE 100
#define N 8
int board[8][8]; //定义棋盘
int Htry1[8]={1,-1,-2,2,2,1,-1,-2};
/*存储马各个出口位置相对当前位置行下标的*/
int Htry2[8]={2,-2,1,1,-1,-2,2,-1};
存储马各个出口位置相对当前位置列下标的增量数组 */
struct Stack{ 屈义栈类型
int i; //亍坐标
int j; /冽坐标
int director; 〃存储方向
}stack[MAXSIZE];

定义一个栈数组
int top=-1;
/栈指针
void InitLocation(int xi,int yi); 〃马儿在棋盘上的起始位置坐标
int TryPath(int i,int j); //马儿每个方向进行尝试,直到试完整个棋盘
void Display。; 输出马儿行走的路径
void InitLocation(int xi,int yi)
{
int x,y; /定义棋盘的横纵坐标变量
top++; 股指针指向第一个栈首
stack[top].i=xi; //将起始位置的横坐标

最近更新