概述
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中实现候选数字自由组合(和重复)之和为目标数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复