2013-05-04 153 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