资源简介
设计一个国际象棋的马踏遍棋盘的演示程序。
将马随机放在国际象棋的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
- 上一篇:c++ http
- 下一篇:c语言课件-循环结构
评论
共有 条评论