【问题标题】:Finding number of combinations查找组合数
【发布时间】:2015-11-21 18:50:50
【问题描述】:

我意识到这可能更像是一个数学问题,而不是一个实际的编程问题。我正在尝试用python解决这个问题。

所以用户将向我指定一个数字范围,最小范围是 1-2,最大范围是 1-99。然后我必须告诉用户在该范围内可以制作多少 3 个数字组合。但是,这些组合只能按数字递增顺序排列。例如,如果给定的范围是 1-50,我不能说 45 - 10 - 20 是一个组合,因为它不是按数字递增顺序排列的。

【问题讨论】:

  • ...你的问题?
  • 我必须输出一个整数,该整数表示给定范围内的 3 个数字组合(仅增加数字)的数量。抱歉,如果不清楚。
  • 这仍然不是问题。要求人们解决您的任务对于 stackoverflow 来说是题外话。相反,您应该描述您尝试过的内容,向我们展示您的代码,然后说明您遇到的问题以及您遇到的具体问题/错误。
  • 我投票决定将此问题作为题外话结束,因为它属于 math.stackexchange。
  • 问题是我什至不知道从哪里开始,除了基本的范围输入要求。

标签: python python-3.x integer combinations


【解决方案1】:

试试itertools 模块。

import itertools
numbers = range(1,100)
items = set(list(itertools.combinations(numbers,3)))
for item in items:
    print item

它似乎给出了想要的输出。

注意:这似乎需要很长时间(编辑: 一次打印所有内容。)。

这是输出的一部分:

, 73, 75), (76, 86, 91), (42, 91, 92), (8, 54, 71), (11, 54, 87), (37, 79, 86), (2, 17, 32), (44, 67, 78), (14, 24, 56), (10, 64, 79), (9, 90, 94), (39, 52, 88), (62, 78, 90), (9, 60, 71), (23, 25, 30), (5, 27, 92), (33, 74, 78), (68, 70, 84), (48, 79, 95), (8, 70, 95), (23, 68, 78), (14, 45, 78), (8, 36, 73), (72, 86, 88), (13, 26, 74), (35, 60, 86), (3, 29, 76), (6, 15, 74), (46, 54, 73), (7, 41, 88), (48, 59, 90), (23, 30, 73), (71, 83, 91), (42, 78, 96), (44, 60, 92), (27, 46, 68), (27, 72, 88), (34, 74, 78), (24, 55, 93), (84, 93, 97), (32, 36, 73), (7, 31, 38), (28, 43, 66), (29, 37, 40), (19, 33, 96), (45, 66, 77), (25, 66, 72), (22, 60, 74), (59, 60, 76), (30, 57, 82), (11, 16, 51), (41, 48, 99), (5, 21, 86), (18, 27, 98), (26, 34, 95), (19, 72, 74), (32, 34, 35), (43, 68, 93), (36, 57, 77), (20, 50, 90), (25, 71, 99), (47, 74, 87), (9, 26, 35), (20, 24, 89), (27, 67, 83), (3, 19, 70), (20, 72, 79), (24, 36, 79), (8, 25, 43), (49, 53, 87), (24, 63, 68), (21, 63, 92), (21, 56, 72), (26, 43, 87), (79, 92, 94), (22, 41, 98), (45, 55, 88), (30, 46, 94), (38, 71, 79), (17, 51, 81), (43, 65, 97), (40, 56, 72), (19, 62, 88), (31, 38, 98), (15, 25, 79), (24, 45, 71), (52, 87, 98), (20, 39, 82), (23, 33, 44), (43, 68, 88), (6, 8, 29), (36, 73, 95), (48, 78, 84), (22, 38, 84), (21, 65, 97), (30, 31, 57), (27, 28, 38), (2, 33, 46), (24, 29, 51), (4, 6, 45), (64, 71, 93), (14, 36, 68), (36, 51, 62), (20, 40, 68), (19, 71, 81), (33, 60, 81), (13, 25, 60), (17, 39, 68), (68, 69, 81), (18, 19, 89), (2, 28, 61), (4, 67, 71), (12, 26, 52), (34, 41, 46), (22, 27, 59), (28, 56, 96), (1, 25, 53), (39, 61, 90), (11, 31, 44), (17, 40, 82), (16, 21, 73), (19, 78, 93), (10, 16, 36), (21, 30, 32), (15, 23, 69), (9, 21, 28), (20, 29, 40), (11, 48, 61), (36, 71, 81), (19, 24, 48), (7, 49, 61), (15, 74, 99), (13, 45, 85)])

【讨论】:

  • 你是如何让它实际输出的?我将 set(list(itertools.combinations(numbers,3))) 放入一个变量中,然后尝试打印该变量,但它似乎没有做任何事情。
  • 其实我在set(...)之前做了一个print(...)
  • 打印集(list(itertools.combinations(numbers,3)))
  • 好的,谢谢!我只是做了 print(len(items)) 因为我想要的只是组合数。
猜你喜欢
  • 2012-11-19
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多