fork download
  1. n=5; N=n+1; G=5; a=2**N # N=7: L=5: a = 2^(N+1): 'knapsack.bas DANILIN
  2. L=[];C=[];e=[];j=[];q=[];s=[] # Dim L(N), C(N), j(N), q(a), q$(a), d(a)
  3. d=[];L=[1]*n;C=[1]*n;e=[1]*a # KNAPSACK 0-1 DANILIN
  4. j=[1]*n;q=[0]*a;s=[0]*a;d=[0]*a
  5.  
  6. from random import randint # Randomize Timer
  7. for i in range(0,n): # For i=1 To N
  8. L[i]=randint(1,3) # L(i)=Int(Rnd*3+1)
  9. C[i]=10+randint(1,9) # C(i)=10+Int(Rnd*9)
  10. print(i+1,L[i],C[i]) # Print i, L(i), C(i): Next
  11. print()
  12.  
  13. for h in range(a-1,(a-1)//2,-1): # For m=a-1 To (a-1)/2 Step -1: g=m: Do
  14. b=str(bin(h)) # q$(m)=LTrim$(Str$(g Mod 2))+q$(m): g=g\2: Loop Until g=0
  15. e[h]=b[3:len(b)] # q$(m)=Mid$(q$(m), 2, Len(q$(m))): Next
  16.  
  17. for k in range (n): # For k=1 To N:
  18. j[k]=int(e[h][k]) # j(k)=Val(Mid$(q$(h), k, 1)) ' from chifer
  19. q[h]=q[h]+L[k]*j[k]*C[k] # q(h)=q(h)+L(k)*j(k)*C(k) ' 0 or 1
  20. d[h]=d[h]+L[k]*j[k] # d(h)=d(h)+L(k)*j(k): Next
  21.  
  22. if d[h]<= G: # If d(h) <= L Then
  23. print(e[h], G, d[h],q[h]) # Print #1, d(h), q(h), q$(h): Next
  24. print()
  25.  
  26. max=0; m=1 # max=0: m=1:
  27. for i in range(a): # For i=1 To a
  28. if d[i]<=G and q[i]>max: # If d(i)<=L Then If q(i) > max
  29. max=q[i]; m=i # Then max=q(i): m=i: Next
  30. print (d[m], q[m], e[m]) # Print #1,: Print #1, d(m), q(m), q$(m): End
  31.  
  32.  
Success #stdin #stdout 0.11s 14316KB
stdin
Standard input is empty
stdout
1 1 19
2 2 17
3 1 16
4 3 17
5 1 16

11101 5 5 85
11100 5 4 69
11001 5 4 69
11000 5 3 53
10110 5 5 86
10101 5 3 51
10100 5 2 35
10011 5 5 86
10010 5 4 70
10001 5 2 35
10000 5 1 19
01101 5 4 66
01100 5 3 50
01010 5 5 85
01001 5 3 50
01000 5 2 34
00111 5 5 83
00110 5 4 67
00101 5 2 32
00100 5 1 16
00011 5 4 67
00010 5 3 51
00001 5 1 16
00000 5 0 0

5 86 10011