「每天兩道算法題」(N皇后問題)

大家覺得不錯的請關注我哦,也可以隨意吐槽,我只有一個要求,千萬不要罵髒話,哈哈!!!


首先是:八皇后問題是一個以國際象棋為背景的問題:如何能夠在 8×8 的國際象棋棋盤上放置八個皇后,使得任何一個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行、縱行或斜線上。

33.N皇后問題:

n皇后問題是將n個皇后放置在n*n的棋盤上,皇后彼此之間不能相互攻擊。

給定一個整數n,返回所有不同的n皇后問題的解決方案。

每個解決方案包含一個明確的n皇后放置佈局,其中“Q”和“.”分別表示一個女王和一個空位置。

經典的問題,找出各個可行解。

首先我們判斷怎樣的位置是可行的,也就是不在同一行,不在同一列,且不在對角線上。

自然每個都在不同行上,所以我們可以把問題簡化,在每一行找可以放進皇后的列。

一行一行的找遇到可行的列就加進去,當list的大小等於n的時候,就說明加滿了,可以把結果存進去。

其實考的就是用用回溯法!!!

「每天兩道算法題」(N皇后問題)

「每天兩道算法題」(N皇后問題)

34.N皇后問題 II:

根據n皇后問題,現在返回n皇后不同的解決方案的數量而不是具體的放置佈局。

樣例:

比如n=4,存在2種解決方案

「每天兩道算法題」(N皇后問題)


分享到:


相關文章: