我很难处理组划分问题。会有人掉吗
请给我点灯?在
让我简化一下我的问题。我想除以十个数(即0, 1, ..., 9
)
分成三组,每组有(4, 3, 3
)个数字。条件是:
组内顺序无关紧要。例如,[(0, 1, 2, 3
)、(4, 5,
6
)、(7, 8, 9
)]将被视为与[(3, 0, 1, 2
)相同,
(5, 6, 4
),(7, 8, 9
)]。
我想让(1, 2, 3
)总是在同一个组中,对于(7, 8
)也是如此。
如何列出符合上述条件的所有可能的分组方案?谢谢!在
我使用的是python2.7。在
Tags:
所以你需要划分为3个大小为4,3,3的块,其中(1,2,3)在一个块中,(7,8)在一个块中。在
这意味着1,2,3和7,8不能在同一个块中。在
先忘了键盘,分析一下问题
IMHO,你应该分开三个案例:
案例1
总计:5*4=20个不同分区
案例2
总计:5*4/2=10个不同的分区(/2,因为您需要组合而不是排列)
案例3
总计:5个不同分区
所以你知道你应该有35个不同的分区
Python代码:
你得到的是:
^{pr2}$(手动格式化以便于阅读…)
如果我正确地理解了您的问题,这应该符合您的要求:
如果您有任何后续问题,请随时提出!在
^{pr2}$
>>> for partition in partition_generator(): ... print(partition) ... ((1, 2, 3, 6), (7, 8, 9), (0, 4, 5)) ((1, 2, 3, 9), (7, 8, 6), (0, 4, 5)) ((7, 8, 6, 9), (1, 2, 3), (0, 4, 5)) ((1, 2, 3, 5), (7, 8, 9), (0, 4, 6)) ((1, 2, 3, 9), (7, 8, 5), (0, 4, 6)) ((7, 8, 5, 9), (1, 2, 3), (0, 4, 6)) ((1, 2, 3, 5), (7, 8, 6), (0, 4, 9)) ((1, 2, 3, 6), (7, 8, 5), (0, 4, 9)) ((7, 8, 5, 6), (1, 2, 3), (0, 4, 9)) ((1, 2, 3, 4), (7, 8, 9), (0, 5, 6)) ((1, 2, 3, 9), (7, 8, 4), (0, 5, 6)) ((7, 8, 4, 9), (1, 2, 3), (0, 5, 6)) ((1, 2, 3, 4), (7, 8, 6), (0, 5, 9)) ((1, 2, 3, 6), (7, 8, 4), (0, 5, 9)) ((7, 8, 4, 6), (1, 2, 3), (0, 5, 9)) ((1, 2, 3, 4), (7, 8, 5), (0, 6, 9)) ((1, 2, 3, 5), (7, 8, 4), (0, 6, 9)) ((7, 8, 4, 5), (1, 2, 3), (0, 6, 9)) ((1, 2, 3, 0), (7, 8, 9), (4, 5, 6)) ((1, 2, 3, 9), (7, 8, 0), (4, 5, 6)) ((7, 8, 0, 9), (1, 2, 3), (4, 5, 6)) ((1, 2, 3, 0), (7, 8, 6), (4, 5, 9)) ((1, 2, 3, 6), (7, 8, 0), (4, 5, 9)) ((7, 8, 0, 6), (1, 2, 3), (4, 5, 9)) ((1, 2, 3, 0), (7, 8, 5), (4, 6, 9)) ((1, 2, 3, 5), (7, 8, 0), (4, 6, 9)) ((7, 8, 0, 5), (1, 2, 3), (4, 6, 9)) ((1, 2, 3, 0), (7, 8, 4), (5, 6, 9)) ((1, 2, 3, 4), (7, 8, 0), (5, 6, 9)) ((7, 8, 0, 4), (1, 2, 3), (5, 6, 9)) ((0, 4, 5, 6), (1, 2, 3), (7, 8, 9)) ((0, 4, 5, 9), (1, 2, 3), (7, 8, 6)) ((0, 4, 6, 9), (1, 2, 3), (7, 8, 5)) ((0, 5, 6, 9), (1, 2, 3), (7, 8, 4)) ((4, 5, 6, 9), (1, 2, 3), (7, 8, 0))
;