Python经典题:找出1-9中有那些组合相加等于一个特定值,例如说20,一个列表中元素进行组合,等于一个目标值【杭州多测师_王sir】【杭州多测师】...

找出1-9中有那些组合相加等于一个特定值,例如说20
num = [1,2,3,4,5,6,7,8,9]
def count(num,n):
    # num = list(sorted(filter(lambda x: x <= n, num)))
    # print(num)
    combinations_impl(num, n, [])

def combinations_impl(num, n, ls):
    if n == 0:
        print(ls)   #遍历列表中的元素如果通过目标值n减掉列表中所有元素等于0、那就满足要求、打印结果
        return
    for i in range(0, len(num)):  #i取的是0到num列表长度-1
        if num[i] <=n:    #当列表当中遍历出来的元素小于传进来的目标值n
            ls.append(num[i])  #就把列表当中遍历出来的元素追加到ls列表里面
            combinations_impl(num[i + 1:], n - num[i], ls) #[5,6,7,8,9],15-5=10,[1,2,3,4,5]
            ls.pop()   #先添加到列表里面判断n是否等于0、如果不等于0、说明列表相加不等于目标值、则移除、继续下一次判断
        else:
            break  #不满足要求的话直接退出
result = count(num, 20)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值