我是靠谱客的博主 幸福黑夜,最近开发中收集的这篇文章主要介绍PYthon中实现候选数字自由组合(和重复)之和为目标数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

PYthon中实现候选数字自由组合(和重复)之和为目标数

下图为具体需求
在这里插入图片描述

from itertools import combinations
a, t, T = input("请输入一组数(以逗号隔开):"), eval(input("请输入一个目标数:")), 0
a = [int(n) for n in a.split(',')]  # 以逗号隔开输入值
lists = []  # 临时存储输入值
list0 = []  # 临时存储有重复的排列
list1 = []  # 存储无重复的排列
list2 = []  # 输出值
lists.append(a)  # 导入a
lists_min = min(lists[0])
time = t // lists_min  # 计算出输出最大个数
lists[0].append(0)  # 加入0
lists[0] = lists[0] * time  # 满足m**n条件
com = list(combinations(lists[0], time))
com = list(set(com))  # 初步排重
L = len(com)  # 得到初步排重的长度
for n in range(L):
    list0.append(sorted(com[n]))
for i in list0:
    if not i in list1:
        list1.append(i)
L = len(list1)
for x in range(L):
    for y in range(time):
        T += list1[x][y]
    if T == t:
        list2.append(list1[x])
    T = 0
L = len(list2)
for i in range(L):
    while 0 in list2[i]:
        list2[i].remove(0)
print(list2)

运行结果

请输入一组数(以逗号隔开):2,3,5,4,1
请输入一个目标数:6
[[1, 1, 2, 2], [1, 2, 3], [1, 5], [1, 1, 1, 1, 2], [2, 2, 2], [1, 1, 1, 3], [1, 1, 4], [3, 3], [2, 4], [1, 1, 1, 1, 1, 1]]

最后

以上就是幸福黑夜为你收集整理的PYthon中实现候选数字自由组合(和重复)之和为目标数的全部内容,希望文章能够帮你解决PYthon中实现候选数字自由组合(和重复)之和为目标数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部