可以使用Python的内置函数itertools来创建一个生成器,通过该生成器按照组合的和的顺序生成所有的组合。具体的实现方法如下所示:
import itertools
def generate_combinations(n, k):
for combination in itertools.combinations(range(1, n+1), k):
yield combination
def generate_combs_by_sum(n):
for k in range(1, n+1):
for combination in generate_combinations(n, k):
yield combination
for combination in generate_combs_by_sum(4):
print(combination)
在这个示例中,我们首先定义了一个名为generate_combinations
的函数,该函数使用Python标准库中的itertools
模块来生成所有的大小为k
的组合。然后,我们定义了另一个名为generate_combs_by_sum
的函数,该函数通过迭代不同的k
值来生成所有的组合。在迭代每个k
值时,我们首先调用generate_combinations
函数来生成所有大小为k
的组合,并按照组合中数字的和的顺序进行排序,然后逐个生成器返回给调用函数。
最后,我们使用一个简单的for循环来输出所有的组合。在本示例中,我们将组合大小限制为四个数字,但可以根据需要更改该数字。
上一篇:按顺序生成排列 - R