資料結構和演算法 10 剪枝

2021-10-03 13:21:08 字數 923 閱讀 7021

【一】 interview(面試題)

【1.1】 leetcode 51 52:n queens(n皇后問題)

題目說明:西洋象棋,如何將 n 個皇后放置在 n x n 的棋盤上,並且使得皇后之間不能相互攻擊

result =

# 深度優先遍歷

defdfs

(cols, na, pie, n)

:'''

:param cols: 列表,儲存皇后所在的列的索引

:param na: 列表,儲存皇后輻射的反斜區域

:param pie: 列表,儲存皇后輻射的正斜區域

:param n: 數字,表示有幾個皇后

'''p =

len(cols)

if p == n:

return

none

for q in

range

(n):

if q not

in cols and p-q not

in na and p+q not

in pie:

dfs(cols+

[q], na+

[p-q]

, pie+

[p+q]

, n)

# 呼叫函式並返回結果

defsolvenqueen

(n):

dfs(,,

, n)

return[[

'.'*i +

'q'+

'.'*

(n-i-1)

for i in sol]

for sol in result ]

print

(solvenqueen(4)

)

資料結構和演算法 Day 10

頭節點的資料域一般不記錄資訊。注意區分頭結點和頭指標的區別 1 頭指標 是指鍊錶指向第乙個節點的指標,若煉表有頭結點,則是指向頭結點的指標。頭指標具有標識作用,所以常用頭指標冠以鍊錶名字 指標變數的名字 無論鍊錶是否為空,頭指標均不為空。頭指標是鍊錶的必要元素。2 頭結點 頭結點是為了操作的統一和方...

資料結構刷題 剪枝

在刷題中會遇到,比如二叉樹問題中會遇到剪枝的問題,我們需要,研究一下什麼是剪枝 剪枝可謂是搜尋的靈魂所在,我們知道搜尋是個愣頭青小伙,一路撞到底可能都撞不到答案,他還可能要撞很多次。所以有什麼方法可以讓他撞的次數少一點呢?我們知道搜尋會形成乙個搜尋樹,這其中有很多的枝杈,但是他們中許多其實是無用或者...

資料結構和演算法 10 集合

集合 聯合 交叉 差異 子集 using system using system collections using system collections generic using system linq using system text using system threading tasks...