砝码问题之一(回头发现貌似多重背包)
生活随笔
收集整理的這篇文章主要介紹了
砝码问题之一(回头发现貌似多重背包)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# -*-coding:utf-8-*-
w = [1, 2]
n = [2, 1]
sum_w = 0
for i in xrange(len(n)):#弄出最大質量sum_w += n[i]*w[i]
S = set([])#創建集合,自動消去重復元素
S.add(sum_w)
for j in xrange(len(n)):temp = S.copy()#拷貝對象for k in temp:t = 1while t <= n[j]:S.add(k - t*w[j])t += 1
print len(S)
剛剛開始完全不記得用set,然后手動排序消除重復元素,看了大神的代碼之后簡直茅廁頓開。。。
不過這個方法會判斷重復,并不優雅
題在下面:
有一組砝碼,重量互不相等,分別為m1、m2、m3……mn;它們可取的最大數量分別為x1、x2、x3……xn。 現要用這些砝碼去稱物體的重量,問能稱出多少種不同的重量。 現在給你兩個正整數列表w和n, 列表w中的第i個元素w[i]表示第i個砝碼的重量,列表n的第 i個元素n[i]表示砝碼i的最大數量。i從0開始,請你輸出不同重量的種數。 如:w=[1,2], n=[2,1], 則輸出5(分析:共有五種重量:0,1,2,3,4)轉載于:https://www.cnblogs.com/webgavin/p/5389995.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的砝码问题之一(回头发现貌似多重背包)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: keepalived 安装和配置
- 下一篇: MySQL数据表字段内容的批量修改、复制