八皇后問題 遞迴

2021-10-20 22:39:18 字數 1437 閱讀 7957

八皇后問題(遞迴)

如何能夠在 8×8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行縱行斜線上。

* 8*8的棋盤方格

* 每一行的某一列上要有乙個皇后

* */

public

class

eightqueen

//左上方

for(

int i=

1;row-i>=

0&&col-i>=

0;i++

)//左下方

for(

int i=

1;row+i<

8&&col-i>=

0;i++

)//右上方

for(

int i=

1;row-i>=

0&&col+i<

8;i++

)//右下方

for(

int i=

1;row+i<

8&&col+i<

8;i++

)return

true;}

public

static

void

equeen

(int row,

int col,

int chess[

])system.out.

println()

;}}//else 在當前行中進行嘗試出符合的列然後進行遞迴呼叫

else

//回退後,將原來這一行的這一列的1置為0;

chess2[row]

[j]=0;

}}}public

static

void

main

(string[

] args)

}nodanger函式中的判斷中的斜線判斷另一種方式:

int plus = row+col;

//右下劃線,第每個點的row+col都相等

int minus = row-col;

//左下劃線,第每個點的row-col都相等

八皇后問題 遞迴

問題描述 在乙個8 8西洋棋盤上,有8個皇后,每個皇后佔一格 要求皇后間不會出現相互 攻擊 的現象,即不能有兩個皇后處在同一行 同一列或同一對角線上。問共有多少種不同的方法。程式 public void testeightprince 初始化,所有的位置都可以放置乙個皇后 for int x 0 x...

八皇后問題 遞迴

八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例.在8x8格的西洋棋上擺放8個皇后,使其不能互相攻擊,即 任意兩個皇后都不能處於同一行,同一列或同一斜線上,問有多少中擺法 92 第乙個皇后先放第一行第一列 第二個皇后放在第二行第一列,然後判斷是否ok,如果不ok,繼續放在第二列,第三列,依...

八皇后問題(遞迴版)

author phinecos since 2008 10 31 class eightqueen 第col列不能有多於1個皇后 for i 0 i maxsize i 對角線不能有多於1個皇后 反對角線 for i row 1 j col 1 i 0 j maxsize i,j for i row...