【问题标题】:"For" loop for all possible combinations without repetition“for”循环所有可能的组合,不重复
【发布时间】:2016-11-13 14:40:29
【问题描述】:

我有一个值表,我需要比较所有这些值。问题是,我不想两次比较相同的值(例如,循环比较值 1 - 2、1 - 3、2 - 1 和 2 - 1 与 1 - 2 相同)。我在一个看起来像这样的循环内写了一个循环:

for (int i = 0; i < numberOfSets; i++) {
        for (int j = 1; j < numberOfSets; j++) {

        //compare element i and j here
    }
}

但是我怎样才能修改这个循环来跳过重复呢?到目前为止,我尝试的是在 i == j 时增加 j:

for (int i = 0; i < numberOfSets; i++) {
        for (int j = 1; j < numberOfSets; j++) {


            if(i == j) {
                j++;
            } else {
                //compare element i and j
            }
    }
}

但它似乎无法正常工作。有没有更好的方法来循环我想要的方式?

【问题讨论】:

  • i 开始 j 而不是 0。
  • 从 i+1 开始内循环

标签: algorithm loops combinations variations


【解决方案1】:

只需使用j = i + 1 启动内部循环。

for (int i = 0; i < numberOfSets; i++) {
    for (int j = i + 1; j < numberOfSets; j++) {
        // do stuff
    }
}

【讨论】:

  • 我不知道为什么我无法弄清楚这一点。谢谢。
【解决方案2】:
for (int i = 0; i < numberOfSets; i++) {
        for (int j = i+1; j < numberOfSets; j++) {
        //compare element i and j here
    }
}

内循环跳过外循环覆盖的元素

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2013-03-03
    相关资源
    最近更新 更多