next_level 2021-11-13 20:37 采纳率: 16.7%
浏览 23

python-找出数组的解集题目

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的数字可以无限制重复被选取。
说明:
所有数字(包括 target)都是正整数。解集不能包含重复的组合。
输入:candidates = [2,3,6,7] target = 7所求解集为:
[7],
[2,2,3]

  • 写回答

1条回答 默认 最新

  • chuifengde 2021-11-13 21:17
    关注
    import itertools as it
    
    candidates = [2, 3, 6, 7, 4, 5]
    target = 9
    
    res = set()
    for i in range(1, len(candidates) + 1):
        x = it.combinations(candidates, i)
        for j in x:
            if sum(j) == target:            
                res.add(tuple(sorted(j)))
            else:
                dd = target - sum(j)
                if dd <= 0:continue
                for i in candidates:
                    yy = dd % i
                    if yy == 0 and dd // i != 1:
                        res.add(tuple(sorted(list(j) + [i] * (dd // i))))
        
    print(res)
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月13日

悬赏问题

  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
  • ¥15 数字图像的降噪滤波增强