Python 回溯

Python 回溯

回溯是遞歸的一種形式。但它涉及選擇任何可能性的唯一選擇。我們首先選擇一個(gè)選項(xiàng)并從中退出,如果我們達(dá)到了一個(gè)狀態(tài),那么我們可以得出結(jié)論:這個(gè)特定的選項(xiàng)不能提供所需的解決方案。我們通過(guò)遍歷每個(gè)可用選項(xiàng)來(lái)重復(fù)這些步驟,直到獲得所需的解決方案。

以下是查找給定字母集合的所有可能排列順序的示例。當(dāng)我們選擇一對(duì)時(shí),我們應(yīng)用回溯來(lái)驗(yàn)證是否已經(jīng)創(chuàng)建了該確切的一對(duì)。如果尚未創(chuàng)建,則將該對(duì)添加到答案列表中,否則將被忽略。

def permute(list, s):
    if list == 1:
        return s
    else:
        return [ y + x
                 for y in permute(1, s)
                 for x in permute(list - 1, s)
                 ]

print(permute(1, ["a","b","c"]))
print(permute(2, ["a","b","c"]))

當(dāng)上面的代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果 -

['a', 'b', 'c']
['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc']

下一節(jié):Python 樹(shù)遍歷算法

Python 數(shù)據(jù)結(jié)構(gòu)

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频