資料結構 八皇后問題

2021-08-20 11:52:08 字數 689 閱讀 5563

八皇后問題簡述:即求8*8的棋盤的所有合法布局,所為合法布局就是:棋盤上共擺放八個棋子,使得每兩個棋子都不在棋盤上的同一行、或者同一列、或同一對角線。

在查詢所有情況過程中利用回溯法,回溯法的基本做法是搜尋,或是一種組織得井井有條的,能避免不必要搜尋的窮舉式搜尋法。這種方法適用於解一些組合數相當大的問題。

在遍歷的過程中,檢查是否符合規定,即a[k]==a[i]  ||  abs(a[k],a[i])==abs(i,k),將符合規定的結果輸出即可。

我的**中輸出了每種情況的擺放方式,並在最後輸出了共有多少種情況。

**實現如下:

#include "stdio.h"

#include "stdlib.h"

#define n 9

int count=0;

int a[n];

int abs(int a,int b)

//*************檢查函式****************

int check(int a[n],int k)

{int i,flag=1;for(i=1;i=n) {

for(j=1;j執行結果的部分截圖如下:

資料結構 八皇后問題

include int count 0 八皇后問題 param row 表示起始行 param col 表示列數 param chess 指向每一行的指標 return int notdanger int row,int j,int chess 8 判斷左上方 for i row,k j i 0 k...

資料結構08 八皇后問題

目錄 一 遞迴實現八皇后問題分析 二 實現 1.定義乙個棋盤,並定義乙個列印棋盤的方法 2.判斷某個格仔是否可以放置皇后 3.設計棋盤 1.每一次回溯計算出一行中滿足條件的格仔 2.回溯的方法中,會利用乙個迴圈來判斷一行中滿足條件的格仔,即一行中滿足的列 3.當行數自增到8行時,每次迴圈得到的二維陣...

資料結構演算法 八皇后問題

八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848 年提出 在 88 格的西洋棋上擺放八個皇后,使其不能互相攻擊,即 任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法 92 理論上應該建立乙個二維陣列來表示棋盤,但是實際上可以通...