给出一个特定子集的列表,如
S = [ {1, 2}, {3, 4}, {1}, {2, 3}, {4}, {3} ]
和“宇宙”设置如
U = {1, 2, 3, 4}
可以使用哪种优雅而简单的算法来查找由S组成的U的所有可能分区?在这个例子中,这样的分区包括
{1, 2} {3, 4}
{1, 2} {3} {4}
等
答案 0 :(得分:1)
使用recursion。
根据是否使用第一个元素,将问题分成两个较小的问题:
{1,2}
和其余任何集合进行分区。{1,2}
,而是使用其余任何一组。这两个选项涵盖了所有可能性。
{3,4}
[ {3, 4}, {1}, {2, 3}, {4}, {3} ]
进行分区来解决的
{1,2,3,4}
[ {3, 4}, {1}, {2, 3}, {4}, {3} ]
进行分区来解决第二个问题
要了解如何解决这些较小的问题,请参阅this similar question。