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

2021-09-17 23:44:03 字數 999 閱讀 1216

八皇后問題

在n*n格的西洋棋上擺放n個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。

輸入: n的大小,即棋盤的大小

輸出:棋盤(用1表示皇后.0表示空著的棋盤)

#include

#include

#include

#include

#define max_board 30

using namespace std;

int board_size;

int queen[max_board]

[max_board]

;//構造的棋盤

int count=0;

int sum;

//皇后初始化

void

initialize()

//列印皇后棋盤

void

print()

printf

("\n");

}printf

("\n\n");

}//判斷皇后是否設防

bool unguarded

(int line,

int col)

void

insert

(int m,

int n)

void

remove

(int m,

int n)

//回溯函式

void

solve_from

(int line,

int col)

else}}

}int

main()

printf

("this is the queens game.\nwhat is the size of the board?\n");

scanf

("%d"

,&board_size);}

}

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

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

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

在8 8大小的西洋棋棋盤上擺放8個皇后棋子,8個皇后不能互相攻擊,即不能在同行同列同斜線上,問共有多少種擺法?處理此類問題不可暴力列舉,巧用遞迴演算法結構和回溯演算法思想,能夠快速解決問題。第乙個皇后放第一列位置1。第二個皇后放第二列位置1,有衝突,往後放。當三個 放到第n個 n 8 後續還有未放置...

資料結構 八皇后演算法

八皇后的基本要求是這樣的 在乙個8 8的矩陣上面放置8個物體,乙個矩陣點只允許放置乙個物體,任意兩個點不能在一行上,也不能在一列上,不能在一條左斜線上,當然也不能在一條右斜線上。參考網上資料改寫 如下 include include include includeusing namespace st...