Ctrl K

Шахматка перестановками строк и столбцов

Сложная
Дана квадратная таблица grid размером n × n из нулей и единиц. За один ход можно поменять местами любые две строки или любые два столбца. Таблица называется **шахматной**, если никакие две соседние по стороне клетки не содержат одинаковых значений. В левом верхнем углу может стоять как 0, так и 1. Верните наименьшее число ходов, за которое таблицу можно сделать шахматной, или -1, если это невозможно.
Пример 1
grid=[[1, 1, 0, 0], [0, 0, 1, 1], [0, 0, 1, 1], [1, 1, 0, 0]] → 2

Меняем местами столбцы 1 и 2 — каждая строка становится чередующейся. Затем меняем строки 2 и 3 (или 0 и 1) — чередуются и столбцы. Всего 2 обмена, быстрее нельзя.

Пример 2
grid=[[1, 0, 1], [0, 1, 0], [1, 0, 1]] → 0

Таблица уже шахматная, ничего менять не нужно.

Пример 3
grid=[[1, 1], [0, 0]] → -1

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

Ограничения
  • 2 ≤ n ≤ 30
  • len(grid) = len(grid[i]) = n
  • grid[i][j] равно 0 или 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПогасить табло переключением рядов СредняяГде встретиться друзьям СложнаяДве группы с одинаковым средним СложнаяДуэль на стирание с XOR СложнаяКлючи и двери в лабиринте Сложная
загружаем Python…
Вход
grid=[[1, 1, 0, 0], [0, 0, 1, 1], [0, 0, 1, 1], [1, 1, 0, 0]]
Ожидается
2

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 78 тестов на сервере, включая скрытые.