Pythonダイナミック企画は0-1バックパック問題を解決します.
1136 ワード
参考:http://www.tuicool.com/articles/Fji2Qb;このブログの出力で選択したものを間違えました!!!運行環境python 2.x
コードは以下の通りです
璣n-選択する物品の個数に供給して、c-物品の最大の負担(制限条件です)、w-物品ごとの重さ、v-物品ごとの価値
コードは以下の通りです
璣n-選択する物品の個数に供給して、c-物品の最大の負担(制限条件です)、w-物品ごとの重さ、v-物品ごとの価値
def bag(n,c,w,v):
res=[[-1 for j in range(c+1)] for i in range(n+1)]
for j in range(c+1):
res[0][j]=0
for i in range(1,n+1):
for j in range(1,c+1):
res[i][j]=res[i-1][j]
if j>=w[i-1] and res[i][j]res[i-1][j]:
x[i-1]=True
j-=w[i-1]
print(' :')
for i in range(n):
if x[i]:
print ' ',i,' ,'
print('')
if __name__=='__main__':
n=5
c=10
w=[2,2,6,5,4]
v=[6,3,5,7,6]
res=bag(n,c,w,v)
show(n,c,w,res)
:[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-1, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6], [-1, 0, 6, 6, 9, 9, 9, 9, 9, 9, 9], [-1, 0, 6, 6, 9, 9, 9, 9, 11, 11, 14], [-1, 0, 6, 6, 9, 9, 9, 13, 13, 16, 16], [-1, 0, 6, 6, 9, 9, 12, 13, 15, 16, 16]]
: 16
:
0 ,
1 ,
3 ,