huaweiOD机试题跳房子ii

该文章提供了一个Python代码示例,用于解决找到给定数组中和为目标值的最长子数组问题。它使用了回溯算法,参考了LeetCode的39题组合总和的实现。在给定的示例输入[1,2,4,5,0]和目标数9的情况下,代码能找到满足条件的子数组[4,5,0]。
摘要由CSDN通过智能技术生成

题的具体描述没看清楚,描述用例差不是这样

[1,2,4,5,0]  第一行输入数组

9               第二行输入一个标记数

[4,5,0]       第三行输出一个子数组,使子数组的和为标记数,子数组是最长子数组。

Python代码实现,参考leetcode39组合总和实现。

def fun(lists, target):
    n = len(lists)
    results=[]
    # sum是当前的选择,track 是路径
    def backtrack(sum,lists_new, track):
        # 路径结束,不满足约束条件
        if sum > target :
            return
            # 路径结束,满足约束条件
        if sum == target:
            results.append(track)
            return
        for j in range(len(lists_new)):
            # 更新选择列表和路径,递归
            backtrack(sum + lists_new[j],lists_new[j+1:n+1], track + [lists_new[j]])
    backtrack(0,lists,[])
    return results

if __name__ == '__main__':
    # ss=input()
    # target=int(input())
    # ss_new=ss[1:-1]
    # lists=list(map(int,ss_new.split(",")))
    #lists_new=sorted(lists)
    # res&#
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值