八皇后問題是乙個以西洋棋為背景的問題:如何能夠在8×8的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行、縱行或斜線上。如圖所示:
問題關鍵在於每一列的皇后不能和其他列的皇后在同一行,同一斜線上(正斜線,反斜線均不可)。
public
class
queen
//當前列不能放在前面列i的棋子的反斜線上
if(cols[i] + d < maxqueen)
}for (int i = 0; i < maxqueen; i++)
//沒有放便將位置存放在陣列中
cols[n] = i;
if(n < maxqueen - 1)else
//繼續迴圈,重n列的不同位置再開始
}
}public
void
printqueen()else
}system.out.println();}}
public
static
void
main(string args)
}
以上就完成了八皇后問題的解法。 資料結構 八皇后演算法
八皇后的基本要求是這樣的 在乙個8 8的矩陣上面放置8個物體,乙個矩陣點只允許放置乙個物體,任意兩個點不能在一行上,也不能在一列上,不能在一條左斜線上,當然也不能在一條右斜線上。參考網上資料改寫 如下 include include include includeusing namespace st...
資料結構與演算法 遞迴 八皇后
八皇后問題介紹 八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即 任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。由於西洋棋是乙個8 8的棋盤,而且棋盤中總共需要...
資料結構演算法 八皇后問題
八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848 年提出 在 88 格的西洋棋上擺放八個皇后,使其不能互相攻擊,即 任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法 92 理論上應該建立乙個二維陣列來表示棋盤,但是實際上可以通...