寫在前面:最開始接觸是資料結構老師在提到過,後來在學python時老師也有提到過,出於好奇就去思考了這個問題,當然,小白的我還是在b站懶貓老師的幫助下學會啦,真棒哈哈哈哈哈哈
這裡主要問題是在於判斷對角線上是否能放,表示上對角線d1,表示下對角線d2,根據老師所說加上自己的理解,同乙個下對角線上 n-col+7相同(n表示行,col表示列)
同理,上對角線上n+col 相同
由以上可得判斷的標準為(flag[col]&&d1[n-col+7]&&d2[n+col]==ture),只要符合這個就能判斷是否能放入棋子
place[n]=col;//擺放皇后
flag[col]=false;//宣布占領第col列
d1[n-col+7]=false;//占領上對角線
d2[n+col]=false;//占領下對角線
#include#include int place[8]=; //第n個皇后所佔位置的列號
bool flag[8]=; //標誌陣列,表示第col列是否可佔,1表示不衝突
bool d1[15]=;
bool d2[15]=; //表示下對角線是否可佔
int number = 0; //用於統計解的數量(八皇后總共有92個解)
void print();
void gernerate(int n);
int main()
void gernerate(int n)
} }void print();
for(col=0;col<8;col++)
table[col][place[col]]=1;
for(i=0;i<8;i++)
printf("\n");
} }
八皇后問題 遞迴 回溯法
八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在柏林的象棋雜誌上不同的作者發表了...
八皇后問題 遞迴 回溯法
八皇后問題,是乙個古老而著名的問題。是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊。即隨意兩個皇后都不能處於同一行 同一列或同一斜線上。問有多少種擺法。高斯覺得有76種方案。1854年在柏林的象棋雜誌上不同的作者發表了...
八皇后問題(遞迴,回溯)
八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。八皇后問題可以推廣為更一般的n皇后擺放問題 這時棋盤的大小變為n n,而皇后個數也變成n。當且僅當 n 1 或...