八皇后問題

2021-07-22 13:49:08 字數 973 閱讀 6379

#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...