【问题标题】:All Combinations of Elements with Exactly One Element from Each Group每组中只有一个元素的所有元素组合
【发布时间】:2017-05-12 09:35:35
【问题描述】:

我正在寻找一种方法来获取所有可能的组合,该组合由恰好每个组中的一个元素组成。出于我的目的,我不关心元素的顺序。我的意思是 {1,2} 与 {2,1} 相同。

假设我有以下 4 组:

Group 1 = {e1, e2}
Group 2 = {e3, e4}
Group 3 = {e5, e6, e7}
Group 4 = {e8}

在这种情况下,我想我会想要(假设实际上是所有独特的组合)

{e1, e3, e5, e8}
{e1, e3, e6, e8}
{e1, e3, e7, e8}
{e1, e4, e5, e8}
{e1, e4, e6, e8}
{e1, e4, e7, e8}
{e2, e3, e5, e8}
{e2, e3, e6, e8}
{e2, e3, e7, e8}
{e2, e4, e5, e8}
{e2, e4, e6, e8}
{e2, e4, e7, e8}

我应该如何处理这样的问题?我希望即使只是一个提示也能帮助我很多。

【问题讨论】:

    标签: java combinations element


    【解决方案1】:

    嵌套循环。它不会很漂亮,但它会起作用。一个循环内一个循环内一个循环内一个循环内一个循环。对照所有其他组检查每个元素,然后检查下一个元素。此解决方案仅在您知道组数的情况下才有效。对于大型团体来说,它也会很慢,O(n^4)。

    【讨论】:

    • 运行时间对我来说并不是什么大问题,因为我将主要处理相对较小的数据集。这个答案很有帮助,因为我已经成功地完成了我需要做的事情。
    【解决方案2】:
        for (var Item1 in Group1) {
            for (var Item2 in Group2) {
                for (var Item3 in Group3) {
                    for (var Item4 in Group4) {
                        echo '{'+Item1+','+Item2+','+Item3+','+Item4+')';
                    }
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多