2016-11-13 36 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 
    } 
} 

內環跳過覆蓋在外環元件