"For" 循环所有可能的组合而不重复
"For" loop for all possible combinations without repetition
我有 table 个值,我需要比较所有这些值。问题是,我不想比较相同的值两次(例如,循环比较值 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
}
}
}
但它似乎无法正常工作。有没有更好的方法来循环我想要的方式?
只需用j = i + 1
开始内循环。
for (int i = 0; i < numberOfSets; i++) {
for (int j = i + 1; j < numberOfSets; j++) {
// do stuff
}
}
for (int i = 0; i < numberOfSets; i++) {
for (int j = i+1; j < numberOfSets; j++) {
//compare element i and j here
}
}
内循环跳过外循环覆盖的元素
我有 table 个值,我需要比较所有这些值。问题是,我不想比较相同的值两次(例如,循环比较值 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:
时增加 jfor (int i = 0; i < numberOfSets; i++) {
for (int j = 1; j < numberOfSets; j++) {
if(i == j) {
j++;
} else {
//compare element i and j
}
}
}
但它似乎无法正常工作。有没有更好的方法来循环我想要的方式?
只需用j = i + 1
开始内循环。
for (int i = 0; i < numberOfSets; i++) {
for (int j = i + 1; j < numberOfSets; j++) {
// do stuff
}
}
for (int i = 0; i < numberOfSets; i++) {
for (int j = i+1; j < numberOfSets; j++) {
//compare element i and j here
}
}
内循环跳过外循环覆盖的元素