按照自己的理解用js實現八皇后的演算法

2021-09-29 04:19:31 字數 978 閱讀 4982

橫軸不重複,也就是說水平方向只能有乙個棋子 :所以我們可以採取一行一行放,這樣一定是不重複的

縱軸不重複,也就是說垂直方向只能有乙個棋子。那麼,放下的棋子(這裡用a表示)與已經放下的棋子(這裡用b表示)兩者               的y軸相比,不相等說明豎著沒有重複

斜著不重複,每條斜線只能有乙個棋子。這個實際上比較的是a到b的水平方向和a到b的垂直方向相等就是斜向(相當於ab為邊長的正方形的對角線),最終用公式表示:ax-bx = ay-by 只要保證ax-bx 不等於 ay-by 就可以了

遊戲玩完了。現在說一下解決的這種演算法:回溯演算法回溯演算法實際上乙個類似列舉的搜尋嘗試過程,主要是在搜尋嘗試過程中尋找問題的解,當發現已不滿足求解條件時,就「回溯」返回,嘗試別的路徑。回溯法是一種選優搜尋法,按選優條件向前搜尋,以達到目標。但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,而滿足回溯條件的某個狀態的點稱為「回溯點」。

上面八皇后的遊戲就是如此,一行一行,一列一列的嘗試放下棋子,當符合條件就嘗試去下一行放下棋子,反之,嘗試放下當前行的下一列繼續嘗試!

js如何將乙個陣列按照自己固定的順序排序?

在工作中遇到乙個問題,在前端頁面上,想把乙個陣列中的元素按照自己想要的順序排序,研究了一下,收集了以下兩種方案 方法一 var obj 想要按照年齡的大小來排序,可以用sort方法 function sortab data else if value2 value1 else obj.sort so...

自己按照書上實現的c語言的單鏈表

include include define elemtype int define status int define ok 1 define false 0 typedef struct lnodelnode,linklist 建立乙個容量為size的單鏈表 status create list...

用haskell實現的八皇后程式

用haskell解八皇后問題,haskell才是最精練的程式 main print queens 8boardsize 8queens 0 queens n x y y queens n 1 x 1.boardsize safe x y 1 where safe x n true safe x c ...