Python knapsack problem

Terry Reedy tjreedy at udel.edu
Fri Feb 13 13:34:03 EST 2009


Kurioz wrote:

> I got the assignment to solve the knapsack problem in Python. I have to 
> find the solution to put items in a sack (I have only one item A, B and 
> C) which maxWeight can't be larger than 6 kilograms.  Solution of this 
> problem should be A and C but the only solution I'm getting is B and C 
> which aren't true because weight of the B and C is 7 kilograms which is 
> heavier than the maxWeight.
> 
> If anyone could point me what am I doing wrong I'd be very grateful! 
> Thanks in advance!

There are several comments I could make, but your immediate problem is 
this: before putting something in the knapsack, you must check whether 
it will exceed the limit.  Since this is a class assignment, I will stop 
there.

> 
> Code:
> 
> #1st array element is weight of an item, and 2nd array element is value
> A=[2.0,1.0]
> B=[3.0,7.0]
> C=[4.0,8.0]
> #Checking the values per one kilo
> vA=A[1]/A[0]
> vB=B[1]/B[0]
> vC=C[1]/C[0]
> maxWeight=0
> print vA,vB,vC
> #Checking the values
> while maxWeight<6:
>    if int(vA)>int(vB) and int(vA)>int(vC):
>        maxWeight=maxWeight+A[0]
>        vA=0
>        print maxWeight
> 
>    elif int(vB)>int(vA) and int(vB)>int(vC):
>        maxWeight=maxWeight+B[0]
>        print maxWeight
> 
>    else:
>        vC=0
>        maxWeight=maxWeight+C[0]
>        print maxWeight
> -- 
> http://mail.python.org/mailman/listinfo/python-list
> 




More information about the Python-list mailing list