39 回溯演算法

2021-10-04 01:14:57 字數 1627 閱讀 7734

var res =

//全域性遍歷,下標表示行,值表示queen所在列

cal8queens(0

)//遞迴函式,求每行的queen

function

cal8queens

(row)

for(

let col=

0;col<

8;col++)}

}//判斷棋子放在(row, col)位置,是否正確

function

isok

(row,col)

return

true

}//列印函式

function

printqueens()

else

} str +=

"\n"

} console.

log(str)

}

const w =

100const items =[1

,5,2

,21,4

,51,2

,55,112,32

]const n = items.length

let maxw =0f

(0,0

)console.

log(maxw)

/** 遞迴函式:n個數,每個可選可不選(0-1問題,要麼是,要麼否)

總情況數:2^n(可過濾不滿足的情況)

i - 表示考察到了哪個物品

cw - 表示當前已裝物品,總重量

w - 揹包可以承受的重量

n - 物品個數

items - 表示所有物品重量的陣列

maxw - 揹包中,存放物品 重量 的最大值

*/function

f(i,cw)

//0-1揹包問題:兩種選擇:裝或不裝

f(i+

1,cw)

//不裝,跳過當前物品

if(cw + items[i]

<= w)

}

/**

假設:1. * 配置任意多個字元

2. ? 配置零個或乙個任意字元

*///str - 字串

//pattern - 正則字串

match

('abc'

,'abc'

)//true

match

('abcdefghj'

,'abc?*'

)//true

match

('abcdefghja'

,'abc?*a'

)//true

match

('abcdefghja'

,'abc?*ab'

)//false

function

match

(text, pattern)

if(pattern[pi]

=='*')}

else

if(pattern[pi]

=='?'

)else

if(ti < tlen && pattern[pi]

== text[ti])}

}

演算法8 回溯

理論基礎 回溯法是一種組織搜尋的一般技術,有 通用的解題法 之稱,用它可以系統的搜尋乙個問題的所有解或任一解。有許多問題,當需要找出它的解集或者要求回答什麼解是滿足某些約束條件的最佳解時,往往要使用回溯法。可以系統地搜尋乙個問題的所有解或任意解,既有系統性又有跳躍性。回溯法的基本做法是搜尋,或是一種...

六 回溯演算法

基本思想 回溯演算法實際上乙個類似列舉的搜尋嘗試過程,主要是在搜尋嘗試過程中尋找問題的解,當發現已不滿足求解條件時,就 回溯 返回,嘗試別的路徑。回溯法是一種選優搜尋法,按選優條件向前搜尋,以達到目標。但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇。滿足回溯條件的某個狀態的點...

演算法(三)回溯演算法概括

x星球要派出乙個5人組成的觀察團前往w星。其中 a國最多可以派出4人。b國最多可以派出2人。c國最多可以派出2人。那麼最終派往w星的觀察團會有多少種國別的不同組合呢?下面的程式解決了這個問題。陣列a 中既是每個國家可以派出的最多的名額。程式執行結果為 defff cefff cdfff cdeff ...