1

我正在寻找解决组合问题的 C# 算法:

假设我有对象 1,2,3,4

我想获得将这些对象分组到多个组中的所有可能方法,每次都包含所有对象。顺序并不重要。例子:

<1,2,3,4> <1,2 / 3,4> <1,3 / 2,4> <1,4 / 3,2> <1,2,3 / 4> <1,2, 4 / 3> <1,3,4 / 2> <2,3,4 / 1> <1,2 / 3 / 4 > <1,3 / 2 / 4> <1,4 / 3 / 2> < 2,3 / 1 / 4> <4,3 / 1 / 2> <1 / 2 / 3 / 4>

在第一种情况下,有一个组包含所有 4 个对象。接下来是具有 2 个组的案例,这些组以多种不同的方式包含所有对象。最后一种情况是 4 个组,每个组只包含一个对象。

4

3 回答 3

1

从 <1> 开始。随着每个新对象的添加,对于以前的每个解决方案,它都可以进入任何组或它自己的新组。

1: <1>
12: <1> => {<1,2> <1|2>}
123: <1,2> => {<1,2,3> <1,2|3>}, <1|2> => {<1,3|2> <1|2,3> <1|2|3>}
1234: <1,2,3> => {<1,2,3,4> <1,2,3|4>},
      <1,2|3> => {<1,2,4|3> <1,2|3,4> <1,2|3|4>},
      <1,3|2> => {<1,3,4|2> <1,3|2,4> <1,3|2|4>}
于 2010-05-09T07:48:27.140 回答
0

我想算法很常见,而不是 C# 算法。有一些方法可以 在这里对所有可能的方式(有一些限制)进行分组

于 2010-05-09T07:47:35.800 回答
0

这看起来像一个电源组此处的另一个 SO 答案中有一些 C# 代码。

于 2010-05-09T09:46:06.640 回答