簡單8皇后問題的實現

2021-10-11 01:23:11 字數 1422 閱讀 6930

今天有個朋友給我發了兩張截圖,我一看,哦,原來是左天他遇到8皇后問題了,他說讓我給他看看,我說試試就試試

三.總結

問題表述為:

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

這裡有個小技巧,就是他已經要求不能在同一行有兩個queen,那我們就可以建立乙個一維陣列即可,不需要二維陣列.

**如下:

int max=8;

int[

] array=

newint

[max]

;static

int count =0;

//計數器計算有多少種排法

private

void

check

(int n)

//依次放入皇后,判斷是否衝突

for(

int i =

0; i )else

}

print()方法編寫如下:

private

void

print()

system.out.println ();

}

judge()方法編寫如下:

//檢視現在的皇后和以前的是否衝突

private

boolean

judge

(int n)

}return

true

;}

這裡對 math.abs (n-i) == math.abs(array[n]-array[i]) 判斷是否在同一條對角線作一下解釋:

首先math.abs(n-i)代表的是第 i -1行到第 n-1 行的距離.

math(array[n]-array[i])代表的是第i-1列到第n-1列的距離,

然後**當第 i -1行到第 n-1 行的距離.第i-1列到第n-1列的距離,**相等的時候,那麼這兩個queen就在同一條斜線上了.就是醬紫

public

static

void

main

(string[

] args)

//編寫放置皇后

private

void

check

(int n)

//依次放入皇后,判斷是否衝突

for(

int i =

0; i )else

}}

n皇后問題n皇后

還有n皇后||

還有面試題8皇后

8皇后問題 c python實現

問題描述 在8 8的西洋棋盤上擺放8個皇后,使其不能互相攻擊,即任何兩個皇后都不能處於同一行 同一列或者同一斜線上,問有多少種擺法。演算法分析 利用3個數組分表來標記衝突,陣列a b c。a陣列代表列衝突,a 0 a 7 代表0 7列,如果a 0 1,則表示第0列已有皇后。b陣列帶表主對角線衝突,為...

8皇后演算法的簡單實現(回溯)

package com.cai.learn.math 8皇后問題運算 回溯演算法 思路 1.第乙個皇后放在第一行,第一列 2.第二行皇后放在第二行第一列,然後判斷是否ok,如不ok,繼續放在第二列,第三列.第8列,找個乙個合適的位置 3.繼續第三個皇后.4.得到乙個正確的時候,在棧回退到上乙個棧時,...

遞迴實現n(經典的8皇后問題)皇后的問題

問題描述 八皇后問題是乙個以西洋棋為背景的問題 如何能夠在8 8的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上,此問題進而可以推廣為n皇后的問題。解題思路 n n的矩陣,遞迴每乙個點,當皇后數量達到n的時候,進行判斷...