Учитывая двоичную матрицу (значения 0 или 1), соседние записи 1 обозначают «холмы».Кроме того, учитывая некоторое число k
, найдите минимальное число 0, которое вам нужно «перевернуть» на 1, чтобы сформировать холм по крайней мере размера k
.
Редактировать: Для пояснениясмежный означает соседство влево-вправо-вверх-вниз.Диагонали не считаются смежными.Например,
[0 1
0 1]
- это один холм размера 2,
[0 1
1 0]
определяет 2 холма размера 1,
[0 1
1 1]
определяет 1 холм размера 3, а
[1 1
1 1]
определяет 1 холм размера 4.
Также дляПояснение: размер определяется областью, образованной смежным BLOB-объектом из 1-х.
Мое первоначальное решение связано с преобразованием каждого существующего холма в узлы графа, а стоимость - минимальный путь друг к другу.узел.Затем, выполняя DFS (или аналогичный алгоритм), чтобы найти минимальную стоимость.
Это терпит неудачу в случаях, когда выбор одного пути уменьшает стоимость для другого края, и решения для борьбы с этим (что я могу придумать)слишком близко к решению о грубой силе.