Я работаю над алгоритмом для расчета минимальных свопов для корректировки матрицы в соответствии с конкретными требованиями c. Дана матрица M x N со всеми элементами либо 0, либо 1. Теперь, поменяв местами два элемента несколько раз, мы хотим, чтобы матрица удовлетворяла требованию, чтобы не было элементов «1» рядом друг с другом. Другими словами, если элемент в (m, n) равен 1, то элемент в (m-1, n), (m, n-1), (m + 1, n) и (m, n + 1) должен все равны 0.
Теперь нам нужен алгоритм для вычисления минимальных свопов для настройки матрицы.
Например, когда исходная матрица выглядит как показано ниже:
1010
0001
0111
0010
0000
Результат должен быть 2 с возможной скорректированной матрицей, как показано ниже:
1010
0001
0100
0010
0101
Я борюсь с этой проблемой в течение нескольких дней и не знаю, с чего начать. Кто-нибудь может поделиться какой-нибудь хорошей идеей или указанием на эту проблему? Заранее спасибо!