2016-11-13 52 views
0

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

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

+0

开始'j'在'从i'而不是0 – Carcigenicate

+0

开始innerloop i + 1的 –

回答

3

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

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

我不知道为什么我没”能够弄清楚这一点。谢谢。 – TheTechGuy96

+0

不客气。我们有时会错过明显的事情 –

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

内环跳过覆盖在外环元件