1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| class Jilu(float): def __new__(cls,value,jilu): o=super(Jilu,cls).__new__(cls,value) if type(jilu) is not list: o.jilu=[jilu] else: o.jilu=jilu return o def __add__(self,jl): a=self.__float__()+jl if type(self)==type(jl): tp=self.jilu=self.jilu+jl.jilu else: tp=self.jilu return self.__new__(Jilu,a,self.jilu) def __str__(self): t1=self.__float__() t2=self.jilu return "value:{0},jilu:{1}".format(t1,t2)
class jc(): def __init__(self,bb:list): self.bb=bb def dg(self,n=0,wt=0): if n>=self.bb.__len__(): return Jilu(0,'') if wt<self.bb[n][0]: t1=-1 t2=self.dg(n+1,wt) pass if wt>=self.bb[n][0]: t1=Jilu(self.bb[n][1],str(n))+self.dg(n+1,wt-self.bb[n][0]) t2=self.dg(n+1,wt) pass return max(t1,t2)
bb=[(2,2),(2.5,3),(4,5),(5,8),(1,2),(3,4),(3,4)]
a=jc(bb) print(a.dg(wt=10))
|