• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: C/C++
  • 标签: 马踏棋盘  

资源简介

设计一个国际象棋的马踏遍棋盘的演示程序。 将马随机放在国际象棋的8×8棋盘Board[8][8]的某个方格中,马按走棋规则(见题集p98)进行移动。要求每个方格只进入一次,走边棋盘上全部64个方格。编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,3,…,64依次填入一个8×8的方阵,输出之。

资源截图

代码片段和文件信息

#include
using namespace std;
//===========================================
typedef struct{      //储存当前坐标和方向
int k;
int l;
int leve;
}Seat;
typedef struct{       //栈的结构
Seat *base;
Seat *top;
int stacksize;
}SqStack;
//===========================================
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define STACK_INIT_SIZE 1000
#define STACKINCREMENT 100
int Bord[8][8];         //棋盘
int m=0n=0i=0j=0;
int leve=1;             //探索方向
int count=0;
//===========================================
void InitStack(SqStack &S){                               //栈初始化
S.base=(Seat*)malloc(STACK_INIT_SIZE*sizeof(Seat));
    if(!S.base)exit(OVERFLOW);
S.top=S.base;
    S.stacksize=STACK_INIT_SIZE;

}
void GetTop(SqStack &SSeat &Se){                 //取栈顶元素
Se=*(S.top-1);
}
void PoTop(SqStack &S){                        //删除栈顶元素
S.top=S.top--;
}
void Push(SqStack &SSeat &Se){                //向栈里压入元素
if(S.top-S.base>=S.stacksize){
    S.base=(Seat*)realloc(S.base
    (S.stacksize+STACKINCREMENT)*sizeof(Seat));
    if(!S.base)exit(OVERFLOW);
    S.top=S.base+S.stacksize;
    S.stacksize+=STACKINCREMENT;
}
   *S.top=Se;
   ++S.top;
}
int StackNEmpty(SqStack &S){                    //判断栈是否为空
   if(S.top==S.base) 
     return 0;
   else
     return -1;
}
void Level(int &mint &nint &iint &jint &leve){       //探索方向函数
switch(leve){
cas

评论

共有 条评论