近期學習了回溯演算法於是自己寫了馬踏棋盤的遞迴以及非遞迴方式的**:
/*
theme:馬踏棋盤
回溯演算法
coder:秒針的聲音
time:2015.1.11
*/#include
#include
#include
#define m 8
typedef struct nodehorse;
horse horse1;
int cnthorse=0;
void init(horse *p);
void horserun(int i,int j,int cnt);
void prin(horse *p);
int main(void)
//初始化
void init(horse *p)
int rstep[m]=;
int cstep[m]=;
for(i=0;irowstep[i]=rstep[i];
p->colstep[i]=cstep[i];
} }void prin(horse *p)
printf("\n");
} putchar('\n');
}void horserun(int i,int j,int cnt)
void cout()
執行效果如下: 回溯演算法(馬踏棋盤)
近期學習了回溯演算法於是自己寫了馬踏棋盤的遞迴以及非遞迴方式的 theme 馬踏棋盤 回溯演算法 coder 秒針的聲音 time 2015.1.11 include include include define m 8 typedef struct nodehorse horse horse1 i...
回溯演算法之馬踏棋盤
問題描述 在8 8西洋棋棋盤上,讓馬從某一位置開始,走 日 子型踏遍棋盤每乙個格仔。演算法思想 採用回溯演算法,在每乙個點上按照一定順序探查下一步的走法,若走不動,則回溯到上一步,繼續探查 include define n 8 typedef struct move int chess n n in...
回溯演算法之馬踏棋盤
首先我在這裡用了乙個10 10的 而不是8 8的 為什麼這樣用呢?我主要考慮到了邊界問題,馬一共有8中踏出方式,可是到了邊界時馬的踏出方式就變得很複雜要考慮踏出問題。所以我就用了10 10的 在出邊界時,只要判斷一下就可以了。這裡有乙個問題,我想說下,馬是否踏到第64步?如果馬踏到第64步時,輸出,...