首页 > 解决方案 > 如何以 k 种不同的方式组合 n 个元素

问题描述

例如 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……这三种语言中的一种对我来说会很棒。

编辑: 这不是作业。该算法稍后将用于分配。

标签: javapythonc#algorithmcombinations

解决方案


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

推荐阅读