#include
//定義乙個全域性變數
int count = 0 ;//記錄多上種方法
/*--------------------------------------
八皇后問題
--------------------------------------
*//*
------------------------------------
1. 判斷兩行兩列上是否有皇后: 這個比較容易判斷
2. 判斷對角線線上是否有皇后: 對角線斜率為-1和1
i = -j+b1 ;
i = j+b2 ;
根據row與col就可以知道b1和b2
返回1表示危險
------------------------------------
*/int is_danger(int (*a)[8] ,int row ,int col)
if(a[row][i]==1 || a[i][col]==1 )
flag= 1 ;
}return flag ;}/*
-------------------------------------
列印出布局
-------------------------------------
*/void print(int (*a)[8])
printf("\n");
}}/*
---------------------------------
遞迴演算法,求出布局
---------------------------------
*/void queen(int (*a)[8] ,int row )
else}}
}int main()
}queen( a ,0) ;
return
0 ;}
八皇后問題
八皇后問題 ackarlix 八皇后問題是乙個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數學家高斯 1850 年提出 在 8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有 76種方案。1854 年在...
八皇后問題
include iostream.h int a 8 8 棋盤 int r 8 結果 int i,j int count 0 void init i j 0 int judge int x,int y for int mi x 1,mj y mi 1 mi for int ri x 1,rj y 1...
八皇后問題
package quess 由於八個皇后的任意兩個不能處在同一行,那麼這肯定是每乙個皇后佔據一行。於是我們可以定義乙個陣列columnindex 8 陣列中第i個數字表示位於第i行的皇后的列號。先把columnindex的八個數字分別用0 7初始化,接下來我們要做的事情就是對陣列columninde...