Python基于回溯法解決01背包問題實例
本文實例講述了Python基于回溯法解決01背包問題。分享給大家供大家參考,具體如下:
同樣的01背包問題,前面采用動態(tài)規(guī)劃的方法,現(xiàn)在用回溯法解決?;厮莘ú捎蒙疃葍?yōu)先策略搜索問題的解,不多說,代碼如下:
bestV=0
curW=0
curV=0
bestx=None
def backtrack(i):
global bestV,curW,curV,x,bestx
if i>=n:
if bestV<curV:
bestV=curV
bestx=x[:]
else:
if curW+w[i]<=c:
x[i]=True
curW+=w[i]
curV+=v[i]
backtrack(i+1)
curW-=w[i]
curV-=v[i]
x[i]=False
backtrack(i+1)
if __name__=='__main__':
n=5
c=10
w=[2,2,6,5,4]
v=[6,3,5,4,6]
x=[False for i in range(n)]
backtrack(0)
print(bestV)
print(bestx)
運行結(jié)果如下:

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
Python函數(shù)式編程指南(二):從函數(shù)開始
這篇文章主要介紹了Python函數(shù)式編程指南(二):從函數(shù)開始,本文講解了定義一個函數(shù)、使用函數(shù)賦值、閉包、作為參數(shù)等內(nèi)容,需要的朋友可以參考下2015-06-06
Python實現(xiàn)繪制3D地球旋轉(zhuǎn)效果
這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)繪制出3D地球旋轉(zhuǎn)的效果,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2023-02-02

