【问题标题】:Combinatorics grouping组合学分组
【发布时间】:2010-05-09 07:36:00
【问题描述】:

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

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

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

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

【问题讨论】:

  • < 1,2 / 3 / 4 > 和其他大小为 3 的分组怎么样?

标签: c# grouping combinatorics


【解决方案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>}

【讨论】:

    【解决方案2】:

    我认为算法很常见,而不是 C# 算法。 有一些方法可以将所有可能的方式分组(有一些限制)here

    【讨论】:

      【解决方案3】:

      这看起来像power set。在另一个 SO 答案 over here 中有一些 C# 代码。

      【讨论】:

        猜你喜欢
        • 2010-11-10
        • 1970-01-01
        • 2019-05-19
        • 1970-01-01
        • 2015-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-02
        相关资源
        最近更新 更多