python递归实现二叉树_关于python中一个递归二叉树遍历的问题

这里已经存在个一个字典,名字为subjects,形式如下{'14.26':(7,1),......},其中的键的名字都是字符串,值的第一位为value,第二位为work。而第一个函数中的maxwork,是work的上限。以...

这里已经存在个一个字典,名字为subjects,形式如下{'14.26':(7,1),......},其中的键的名字都是字符串,值的第一位为value,第二位为work。而第一个函数中的maxwork,是work的上限。以下的一个函数将要遍历整个字典,直到把满足maxwork的总的value算出来。-----------但是事实上,编译未通过。显示unsupported operand type(s) for +: 'int' and 'tuple',整数不能和元组相加。但问题是,s[WORK]不是元组啊。。。

VALUE,WORK=0,1

def dpAdvisor(subjects, maxWork):

nameList=subjects.keys()

tupleList=subjects.values()

bestSubset, bestSubsetValue = \

dpAdvisorHelper(tupleList, maxWork, 1, None, None, [], 0, 0,{},{})

outputSubjects = {}

for i in bestSubset:

outputSubjects[nameList[i]] = tupleList[i]

return outputSubjects

def dpAdvisorHelper(subjects,maxWork,i,bestSubset,bestSubsetValue,

subset,subsetValue,subsetWork,m_set,m_value):

try:

return m_set[i,subsetValue,subsetWork],m_value[i,subsetValue,subsetWork]

except KeyError:

if i>=len(subjects):

if bestSubset == None or subsetValue > bestSubsetValue:

m_set[(i,subsetWork,subsetValue)],m_value[(i,subsetWork,subsetValue)]=None,0

return subset[:], subsetValue

else:

m_set[(i,subsetWork,subsetValue)],m_value[(i,subsetWork,subsetValue)]=None, 0

return bestSubset, bestSubsetValue

else:

s=subjects[i]

withoutSubset, withoutSubsetValue = dpAdvisorHelper(subjects,

maxWork, i+1, bestSubset, bestSubsetValue, subset,

subsetValue, subsetWork,m_set,m_value)

if subsetWork+s[WORK]>maxWork:

withoutSubset, withoutSubsetValue=dpAdvisorHelper(subjects,

maxWork, i+1, bestSubset, bestSubsetValue, subset,

subsetValue, subsetWork,m_set,m_value)

m_set[(i,subsetWork,subsetValue)],m_value[(i,subsetWork,subsetValue)]=bestSubset, bestSubsetValue

return withoutSubset, withoutSubsetValue

else :

withSubset,withSubsetValue=s[WORK]+dpAdvisorHelper(subjects,

maxWork, i+1, bestSubset, bestSubsetValue, subset,

subsetValue + s[VALUE], subsetWork + s[WORK],m_set,m_value)

if withSubsetValue>withoutSubsetValue:

bestSubset,bestSubsetValue=withSubsetValue,withSubsetValue

else:

bestSubset,bestSubsetValue=withoutSubsetValue,withoutSubsetValue

m_set[(i,subsetWork,subsetValue)],m_value[(i,subsetWork,subsetValue)]=bestSubset,bestSubsetValue

return bestSubset,bestSubsetValue

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值