8皇后問題 解法 c

2021-09-09 05:38:27 字數 965 閱讀 7322

可根據更改line、queennumberd的值,任意更改遊戲規則

#include 

#include

#include

#define line 8

#define queennumber 8

void

fun(

int i,

int j)

;bool judge

(int i,

int j)

;void

print

(void);

int map[line]

[line]

;int ans =0;

intmain

(void

)void

fun(

int i,

int j)if(

judge

(i, j)

==true

)else

} map[i]

[j]=0;

//如果此位置不能放,就置空(0),判斷下列的格仔。

//如果此位置能放,走到這裡就意味著上面的**全部執行了,把皇后拿走(置零),再討論其他情況,拿下列位置試探。

fun(i +

1, j);}

bool judge

(int i,

int j)

for(k =

0; k < line; k++

)for

(k =

-line; k <= line; k++

)return

true;}

void

print

(void

)printf

("\n\t");

}printf

("\n********************====\n\n");

}

八皇后及任意多皇后問題解法之遞迴解法

遞迴解法的基本原理是把乙個大問題拆分成幾個類似的小問題,小問題繼續拆解成更小的問題,直到不能拆解的單元問題為止,再把所有單元問題的解匯集成問題的全部解。就八皇后問題而言,可以先擺第一列,共八種位置選中,每種位置選擇下,剩餘的八行七列中繼續擺放其他皇后,即變成了八個 八行七列棋盤擺七個皇后問題 的解的...

8皇后位操作解法

include using namespace std long sum 0 用來記錄皇后放置成功的不同布局數 long upperlim 1 8 1 這是八皇后的位置 試探演算法從最右邊的列開始 void test long row,long ld,long rd row,ld,rd進行或運算,求...

遞迴 基於排列的八皇后問題解法

以下 劉海濤個人部落格 題目 在8 8的西洋棋上擺放八個皇后,使其不能相互攻擊,即任意兩個皇后不得處在同一行 同一列或者同一對角斜線上 並不僅只是最長的兩條對角線 下圖中的每個黑色格仔表示乙個皇后,這就是一種符合條件的擺放方法。請求出總共有多少種擺法。這就是有名的八皇后問題。解決這個問題通常需要用遞...