比较数组中的数据点

时间:2019-12-26 03:17:43

标签: c optimization

答案:

for (int i = 0; i < 12-2; i++){
 for (int j = i+1; j < 12-1; j++){
  for (int k = j+1; k < 12; k++){
    if( isSET(array[i], array[j], array[k]) == 1 ){
      set[n].a = i;
      set[n].b = j;
      set[n].c = k;
      n++;
   }
  }
 }
}

如果我错了,请纠正我。 谢谢您的投入。

原始问题:

我想在一个结构体数组中比较3个数据点。 以某种方式重新组合:

Example: In an Array[4] 
X...Datapoints wich should be compared

XXXO
XXOX
XOXX
OXXX

for (int i = 0; i < 12; i++){
 for (int j = 0; j < 12; j++){
  for (int k = 0; k < 12; k++){
   if( i != j && j != k && k != i ){    // prohibits sets of 111 223 ...
    if( isSET(array[a], array[b], array[c]) == 1 ){
      Tset[n].a = a;
      Tset[n].b = b;
      Tset[n].c = c;
      n++;
    }
   }
  }
 }
}

如果我运行代码,我会得到6套相同的代码。 例如

a b c
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

but I only need one of those.    

有什么好方法吗?

对不起,我很抱歉。

1 个答案:

答案 0 :(得分:0)

for (int i = 0; i < 12-2; i++){
 for (int j = i+1; j < 12-1; j++){
  for (int k = j+1; k < 12; k++){
    if( isSET(array[i], array[j], array[k]) == 1 ){
      set[n].a = i;
      set[n].b = j;
      set[n].c = k;
      n++;
   }
  }
 }
}