C語言解決八皇后問題

2021-09-10 02:50:52 字數 670 閱讀 3678

八皇后問題是這樣乙個問題:將八個皇后擺在一張8*8的西洋棋棋盤上,使每個皇后都無法吃掉別的皇后,即:每一行,每一列,每一條對角線只有乙個皇后,一共有多少種擺法?

演算法思想:

首先逐行遍歷,設定queen[max]陣列記錄縱座標(max為格仔數8),每次落子前判斷座標(i,queen[i])是否滿足條件,用check函式實現。若滿足,進行下一行嘗試。若不滿足,嘗試queen[i+1]...直到遍歷到max-1為止;

記全域性變數num初始為0;

當進行到max-1行時,此時若check函式通過,則列印八皇后表,每成功一次num+1;

最後列印num;

以下是完整**:

//此程式通過依次嘗試每一行,將縱座標儲存在queen陣列中,滿足條件則輸出

#include

#include

#define max 8

int queen[max],sum=0;

void showqueen()

{int  i;

for(i=0;i其結果如下:

c解決八皇后問題

問題描述 這是乙個經典的關於組合學的問題 在乙個西洋棋中的的棋盤上放置8個皇后,為了使其中的任何2個皇后都不能相互 攻擊 希望尋求8個皇后的安全放置位置。該問題的不能相互 攻擊 相當於要求任意兩個皇后不能在同一行 同一列或同一斜線上。求解可能的方案及方案數。思路 一般採用回溯法。易知,每行肯定有乙個...

C 解決八皇后問題

直接上 可以自己慢慢研究 include include using namespace std int linenum 9 第i列的皇后要放的行位置 只用其中的列號1到8 bool a 9 a i 為1表示第i行上尚未放皇后 bool b 15 b i 為1表示第i條斜對角線上尚未放皇后 斜對角線...

八皇后問題 C語言

八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。八皇后共有92種解法。八皇后問題可以推廣為更一般的n皇后擺放問題 這時棋盤的大小變為n n,而皇后個數也變成n...