棧應用之 背包問題(Python 版)


棧應用之 背包問題

背包問題描述:一個背包里可以放入重量為weight的物品,現有n件物品的集合s,其中物品的重量為別為w0,w1,...,wn-1。問題是能否從中選出若干件物品,其重量之和正好等於weight,如果存在就說明這一背包問題有解,否則就無解。

 

  • 使用遞歸方式求解 
 1 def knap_rec(weight,wlist,n) :
 2     if weight == 0 :
 3         return True
 4     if weight < 0 or (weight >0 and n < 1) :
 5         return False 
 6     if knap_rec(weight - wlist[n-1],wlist,n-1) :
 7         print("Item" + str(n) + ":" , wlist[n-1])
 8         return True
 9     if knap_rec(weight,wlist,n-1) :
10         return True
11     else :
12         return False

 

 

 

  • 使用棧定義非遞歸方式求解、

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM