Как найти лучшее соответствие для всех столбцов 2D-массива? - PullRequest
1 голос
/ 04 ноября 2011

Допустим, у меня есть 2D-массив, который выглядит следующим образом:

________________
|10|15|14|20|30|
|14|10|73|71|55|
|73|30|42|84|74|
|14|74|XX|15|10|
----------------

Как я показал, столбцы не обязательно должны быть одинакового размера.

Теперь мне нужно найти наилучшее совпадение для каждого столбца (тот, который имеет наиболее точно одинаковые элементы и самые разные). Конечно, я мог бы сделать это в п ^ 2, но это слишком медленно для меня. Как мне это сделать?

Я подумал о дереве k-измерения и нашел ближайшего соседа для каждого, но я не знаю, хорошо ли это, и оно будет работать, как я хочу (вероятно, нет).

Результат, например:

  • Первый столбец, скорее всего, третий (только три разных - 10, 14, 42)
  • Второй столбец -> пятый (только два разных - 15 и 55)

и так далее, и так далее ...:)

1 Ответ

0 голосов
/ 25 ноября 2011

Если вы знаете, что все числа в таблице являются двузначными числами (т. Е. 10 =

bool array[5][100];
std::fill( &array[0][0], &array[0][0] + sizeof(array) , false ); // init to false
for (int i = 0; i < 5; i++)
{
  for (int j = 0; j <5; j++)
  {
     array[i][table[i][j]] = true;
  }
}

Оттуда должно быть легко.

...