回溯算法(马踏棋盘)
  TEZNKK3IfmPf 2023年11月15日 16 0


近期学习了回溯算法于是自己写了马踏棋盘的递归以及非递归方式的代码:

/*
Theme:马踏棋盘
回溯算法
Coder:秒针的声音
Time:2015.1.11
*/
#include


#include


#include


#define M 8
typedef struct node{
int horse[M][M];
int RowStep[M];
int ColStep[M];
}Horse;
Horse horse1;
int CntHorse=0;
void Init(Horse *p);
void HorseRun(int i,int j,int cnt);
void Prin(Horse *p);
int main(void)
{
FILE *fp;
fp=fopen("horse.txt","wt+");
Init(&horse1);
/*棋盘位于(0,0)--(7,7)位置*/
srand((unsigned)time(NULL));
int i=rand()%10;
int j=rand()%10;
while(i>7) i=rand()%10;
while(j>7) j=rand()%10;
HorseRun(i,j,1);
fclose(fp);
return 0;
}
//初始化
void Init(Horse *p)
{
int i;
for(i=0;i

horse[i/M][i%M]=0;
}
int rstep[M]={-2,-1,1,2,2,1,-1,-2};
int cstep[M]={1,2,2,1,-1,-2,-2,-1};
for(i=0;i

RowStep[i]=rstep[i]; p->ColStep[i]=cstep[i]; } } void Prin(Horse *p) { int i,j; printf("No.%d\n",++CntHorse); for(i=0;i

horse[i][j]); } printf("\n"); } putchar('\n'); } void HorseRun(int i,int j,int cnt) { int times; int a,b;//中间变量 for(times=0;times

=0&&a

=0&&b

​​​/*
Theme:马踏棋盘(非递归)
Coder:秒针的声音
time:2015.1.13
*/
#include


using namespace std;
#define N 8
#include


class horse{
private:
int board[N][N];
int Step[2][N];
int stack[N*N];
int top;
int i;
int j;
int n;
public:
horse(){
n=1;
for(int i=0;i

i=0;
this->j=4;
}
void Cout(){
cout<<"N0."<

<

=0&&a

=0&&b

HorseRun(); return 0; }

运行效果如下:


​​

回溯算法(马踏棋盘)


(本人水平有限,若有不足之处欢迎大家交流) ​

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

TEZNKK3IfmPf