2013-05-04 150 views
1

我有兩個數組,每個數組都包含座標值。換句話說,第一個數組包含x的值,第二個數組包含y的值。目標包括沒有相等的座標,這意味着每個座標必須與所有其他座標不同。我試着這樣做:比較兩個數組的值

for (i=0; i<len(lrs)-1; i++) { 
    for (j=0; j<len(lrs) ; j++) { 
     if ((pos.x[j]==pos.x[i+1])&&(pos.y[j]==pos.y[i+1])) 
      printf("1"); 
    } 
} 

然而,有一個時刻,在「J」的價值觀和「我」是相同的,因此,病情得到驗證,這不是預期的。也許我沒有想到正確的方式,但我無法弄清楚。

+1

只有在'i!= j'完成後才檢查條件。 – 2013-05-04 16:38:17

+0

檢查是否(i!= j)條件 – ridoy 2013-05-04 16:40:01

+0

如果元素的數量很大,這是非常低效的。 – ouah 2013-05-04 16:42:19

回答

3

這是更好地使內環對於j>我只:

for (i=0; i<len(lrs); i++) { 
    for (j=i+1; j<len(lrs) ; j++) { 
     if ((pos.x[j]==pos.x[i])&&(pos.y[j]==pos.y[i])) 
      printf("1"); 
    } 
} 

在這種情況下,你就永遠不會檢查條件我==學家更多的你會檢查每一對只有一次。

+0

+1,好點(只檢查一次) – 2013-05-04 16:44:26

+0

謝謝,這正是我想要的! – Raphm 2013-05-04 17:11:56