以下是一个示例代码,以遍历将12个对象分成4组的所有可能方式:
def partition(items, groups):
if len(items) == 0:
yield [[] for _ in range(groups)]
elif groups == 1:
yield [items]
else:
for i in range(1, len(items) - groups + 2):
for part in partition(items[i:], groups - 1):
yield [items[:i]] + part
objects = [i+1 for i in range(12)]
groups = 4
for result in partition(objects, groups):
print(result)
该代码使用递归的方式,将问题拆分为子问题,并生成所有可能的解决方案。函数partition接受两个参数,items表示待分组的对象列表,groups表示要分成的组数。
在每一次递归调用中,我们选择一个对象作为当前组的第一个元素,然后将剩余的对象传递给下一次递归调用。通过迭代不同的选择,我们可以找到所有可能的分组方式。
在最后的输出中,每个分组作为一个子列表输出,所有分组方式作为一个大列表输出。