“对于”所有可能的组合循环不重复
问题描述:
我有一个值的表,我需要比较所有这些。问题是,我不想比较两次相同的值(例如,循环比较值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
}
}
+0
我不知道为什么我没”能够弄清楚这一点。谢谢。 – TheTechGuy96
+0
不客气。我们有时会错过明显的事情 –
答
for (int i = 0; i < numberOfSets; i++) {
for (int j = i+1; j < numberOfSets; j++) {
//compare element i and j here
}
}
内环跳过覆盖在外环元件
开始'j'在'从i'而不是0 – Carcigenicate
开始innerloop i + 1的 –