递归实现:从给定的字典中抽出所有相加值SUM的全部组合

Posted 奇小东

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归实现:从给定的字典中抽出所有相加值SUM的全部组合相关的知识,希望对你有一定的参考价值。

递归的话,只需要考虑第一个数字的两种情况:选择或者不选择

class Dic:
    def __init__(self,id,values):
        self.id = id
        self.values = values

def fun(dic,res,target,index):
    if target == 0:
        print res
        return
    if index == len(dic)-1:
        return
    #not choice this
    fun(dic,res,target,index+1)
    #choice this
    res += dic[index].id
    target -= dic[index].values
    fun(dic,res,target,index+1)

if __name__ == __main__:
    dic1 = Dic("X001",1)
    dic2 = Dic("X002",3)
    dic3 = Dic("X003", 4)
    dic4 = Dic("X004", 5)
    dic5 = Dic("X005", 9)
    dic6 = Dic("X00", 11)
    dic7 = Dic("X00", 2)
    dic = [dic1,dic2,dic3,dic4,dic5,dic6,dic7]
    res = ""
    target = 9
    fun(dic,res,target,0)

 

以上是关于递归实现:从给定的字典中抽出所有相加值SUM的全部组合的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 112. 路径总和 递归 树的遍历

二叉树:递归函数究竟什么时候需要返回值,什么时候不要返回值?

[模板]洛谷T3372 线段树 模板1

Python 2.7:将零添加到多值字典列表之间的大小差异并将其相加

[112].路径总和

leetcode 112. 路径总和