【问题标题】:How to combinate n elements in k different ways [duplicate]如何以k种不同的方式组合n个元素[重复]
【发布时间】:2021-08-11 17:12:18
【问题描述】:

例如12 个球和 3 个盒子,如何使用所有球将列表添加到所有组合。 例如 n 是 12,k 是 3:

 - (12,0,0)
 - (0,12,0)
 - (0,0,12)
 - (0,1,11)
 - (0,11,1)
 - (11,1,0)
 - (11,0,1)
 - (10,1,1)...

Python、c#、Java……这三种语言中的一种对我来说会很棒。

编辑: 这不是家庭作业。稍后将使用此算法进行分配。

【问题讨论】:

  • 你可以使用itertools.combinations(),更多信息here
  • 感谢您的评论,但组合不是正确答案,因为我必须使用所有球所以每个组合元素的数字总和必须为 12。
  • 啊,对不起,我看错了
  • @Avijeet 你说得对,只是连接没那么简单link

标签: java python c# algorithm combinations


【解决方案1】:
lst, cnt = [], 0
for i in range(13):
    for j in range(13 - i):
        lst.append((i, j, 12 - j - i))
        cnt += 1
print(*lst, sep='\n')
print(f'combinations = {cnt}')
(0, 0, 12)
(0, 1, 11)
(0, 2, 10)
(0, 3, 9)
(0, 4, 8)
(0, 5, 7)
(0, 6, 6)
...
(11, 0, 1)
(11, 1, 0)
(12, 0, 0)
combinations = 91

【讨论】:

    猜你喜欢
    • 2023-01-18
    • 1970-01-01
    • 2011-11-10
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多