2016-03-09 3 views
0

Я хотел бы сохранить расстояние между 4 кластерами, поэтому я взял сумму расстояния между кластером x и кластером y и наоборот - поскольку расстояние между кластером x и кластером y! = Cluster y и кластер x - затем разделите их на 2, чтобы он был ненаправленным.Избегайте добавления дубликатов в массив

Проблема, с которой я столкнулся, - это дублирование. Как я могу закончить с 6 расстояниями и избежать добавления дубликатов в массив в первую очередь.

Примечание:

  • я сделал DistanceBetweenClusterToAnother двумерный матрицы с целью решения этой проблемы, так как я не мог решить с одномерным массивом.

  • this.clusterSize() равен 4.

    for (int k = 0; k < this.clusterSize(); k++) { 
        for (int j = 0; j < this.clusterSize(); j++) { 
         if (k != j) { 
          DistanceBetweenClusterToAnother[k][j] = GADOfCluster1toCluster2[k][j] + GADOfCluster1toCluster2[j][k]; 
          DistanceBetweenClusterToAnother[k][j]= DistanceBetweenClusterToAnother[k][j]/2; 
         } 
        } 
    } 
    
+4

Используйте набор. –

+0

Я даже не могу окутать, как расстояние между x и y не равно расстоянию между y и x ... –

+2

@AlvinThompson, если функция расстояния не симметрична, например, в ориентированном графе :) –

ответ

0

Не уверен, если это будет оптимальным способом, но вы можете проверить массив на матч.

if (valueYouWantToCheck == Array.getIndex(i)) 
    Array.add(valueYouWantToCheck); 
+0

Конечно, добавьте это внутри a, так что вы можете i ++ в индексе сканировать весь массив. (Это мой первый ответ на что-то здесь, поэтому я извиняюсь за плохое форматирование) – PapaiVader

+0

Ваш код добавит элемент в массив, если он найдет его уже в массиве. Вы уверены, что это то, что вы имели в виду? – Jason

0

Запустить внутренний контур после текущего положения внешнего контура. Кроме того, вы можете усреднить одну строку:

for (int k = 0; k < this.clusterSize(); k++) { 
    for (int j = k + 1; j < this.clusterSize(); j++) { 
     DistanceBetweenClusterToAnother[k][j] = (GADOfCluster1toCluster2[k][j] + GADOfCluster1toCluster2[j][k])/2; 
    } 
} 
Смежные вопросы