fork download
  1. n=5; N=n+1; G=5; a=2**N # KNAPSACK 0-1 DANILIN
  2. L=[];C=[];e=[];j=[];q=[];s=[] # rextester.com/BCKP19591
  3. d=[];L=[1]*n;C=[1]*n;e=[1]*a
  4. j=[1]*n;q=[0]*a;s=[0]*a;d=[0]*a
  5.  
  6. from random import randint
  7. for i in range(0,n):
  8. L[i]=randint(1,3)
  9. C[i]=10+randint(1,9)
  10. print(i+1,L[i],C[i])
  11. print()
  12.  
  13. for h in range(a-1,(a-1)//2,-1):
  14. b=str(bin(h))
  15. e[h]=b[3:len(b)]
  16.  
  17. for k in range (n):
  18. j[k]=int(e[h][k])
  19. q[h]=q[h]+L[k]*j[k]*C[k]
  20. d[h]=d[h]+L[k]*j[k]
  21.  
  22. if d[h]<= G:
  23. print(e[h], G, d[h], q[h])
  24. print()
  25.  
  26. max=0; m=1
  27. for i in range(a):
  28. if d[i]<=G and q[i]>max:
  29. max=q[i]; m=i
  30. print (d[m], q[m], e[m])
  31.  
Success #stdin #stdout 0.07s 14360KB
stdin
Standard input is empty
stdout
1 2 11
2 2 14
3 2 16
4 1 12
5 3 19

11010 5 5 62
11000 5 4 50
10110 5 5 66
10100 5 4 54
10010 5 3 34
10001 5 5 79
10000 5 2 22
01110 5 5 72
01100 5 4 60
01010 5 3 40
01001 5 5 85
01000 5 2 28
00110 5 3 44
00101 5 5 89
00100 5 2 32
00011 5 4 69
00010 5 1 12
00001 5 3 57
00000 5 0 0

5 89 00101