Предположим, вам нужно посчитать количество островков в матрице
{1, 1, 0, 0, 0},
{0, 1, 0, 0, 1},
{1, 0, 0, 1, 1},
{0, 0, 0, 0, 0},
{1, 0, 1, 0, 1}
Мы могли бы просто использовать DFS или BFS, когда размер входной матрицы можно уместить в память.
Однако, что нам делать, если входная матрица действительно большая, которая не помещается в памяти?
Я мог бы разбить / разделить матрицу ввода на разные небольшие файлы и прочитать их соответственно.
Но как их объединить?
Я застрял в том, как объединить их. У меня есть идея, что при объединении их мы должны прочитать какую-то перекрывающуюся часть. Но какой конкретный способ сделать это?
Пытаясь понять решение Мэтта.
Когда я нарисовал приведенный ниже образец на доске и обработал его построчно.
Объединить влево, затем объединить верх, и, кажется, не будет работать.
Из решения Мэтта.
не уверен, что такое topidx, ботидкс означает
int topidx = col * 2;
int botidx = topidx + 1;