не более чем 1500 на 750. Каждый элемент матрицы - это значение от 0 до 65536.
Нам дан какой-то числовой числовое промежуток "внутри" от 0 до 65536. То есть, может быть промежуток 25333 - 35000
Нам нужно найти элементы этой матрицы, которые находятся в заданном промежутке и сгруппировать их по признаку соседства в матрице.
Попробую на примере, допустим есть такая матрица и нам дан промежуток 4-5
4 5 2 0 0 0 0 0 0
3 5 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 5 0 0 0 0 0 0 0
0 5 0 0 0 0 0 0 0
Тогда первой областью по соседству будет (y, x) y - номер строки, x - номер столбца:
[[0][0], [0][1], [1][1]]
[[3][1], [4][1]]
Можете подсказать направление, в котором можно копать? Пока в голову лишь приходит васянский алгоритм, при котором мы будет проходить по каждому элементу и если он находится в заданном промежутке, то мы смотрим его соседей, если они находятся также в промежутке, то мы их добавляем. Если выбираю такой метод, то там ещё можно будет добавить оптимизацию на проверку были мы в текущем элементе или ещё нет, но всё это выглядит очень неэффективно? Заранее всем спасибо!
Выглядит как работающий за n Я бы посоветовал его написать для начала, а потом уже смотреть что-то более продвинутое
Система непересекающихся множеств, UnionFind ?
Либо union find /disjoint set union, либо обход в ширину/глубину.
Обсуждают сегодня