“For”循环用于所有可能的组合而不重复

时间:2016-11-13 14:40:30

标签: algorithm loops combinations variations

我有一个值表,我需要比较所有这些值。问题是,我不想两次比较相同的值(例如,循环比较值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
            }
    }
}

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

2 个答案:

答案 0 :(得分:3)

只需使用j = i + 1开始内循环。

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

答案 1 :(得分:1)

for (int i = 0; i < numberOfSets; i++) {
        for (int j = i+1; j < numberOfSets; j++) {
        //compare element i and j here
    }
}

内部循环跳过外部循环中包含的元素