Python基于回溯法解決01背包問(wèn)題實(shí)例
本文實(shí)例講述了Python基于回溯法解決01背包問(wèn)題。分享給大家供大家參考,具體如下:
同樣的01背包問(wèn)題,前面采用動(dòng)態(tài)規(guī)劃的方法,現(xiàn)在用回溯法解決?;厮莘ú捎蒙疃葍?yōu)先策略搜索問(wèn)題的解,不多說(shuō),代碼如下:
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)
運(yùn)行結(jié)果如下:

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
如何使用VSCode愉快的寫(xiě)Python于調(diào)試配置步驟
從我的使用經(jīng)驗(yàn)出發(fā),可以說(shuō)VSCode用來(lái)寫(xiě)Python真的是再合適不過(guò)了,你將體驗(yàn)到絲滑的編程體驗(yàn)和無(wú)限擴(kuò)展的可能。而且,如果你的項(xiàng)目是包含多種語(yǔ)言的,比如Web開(kāi)發(fā),你不必再開(kāi)多個(gè)編輯器和其他工具,因?yàn)檫@一切都可以在VSCode里完成了2018-04-04
Python比較文件夾比另一同名文件夾多出的文件并復(fù)制出來(lái)的方法
這篇文章主要介紹了Python比較文件夾比另一同名文件夾多出的文件并復(fù)制出來(lái)的方法,涉及Python針對(duì)文件與文件夾的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
從零學(xué)python系列之新版本導(dǎo)入httplib模塊報(bào)ImportError解決方案
在使用新版python打開(kāi)舊版本代碼的時(shí)候,可能會(huì)有些報(bào)錯(cuò)或者不兼容的情況出現(xiàn),今天我們就來(lái)分析其中的一種情況2014-05-05
Python數(shù)據(jù)處理篇之Sympy系列(五)---解方程
這篇文章主要介紹了Python數(shù)據(jù)處理篇之Sympy系列(五)---解方程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10

