PYthon中实现候选数字自由组合(和重复)之和为目标数
下图为具体需求
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33from 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)
运行结果
复制代码
1
2
3
4请输入一组数(以逗号隔开):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中实现候选数字自由组合(和重复)之和为目标数内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复