Ctrl K

Сколько свидетелей могут быть честными

Сложная
Есть n свидетелей. Каждый из них либо **честный** — всегда говорит правду, — либо **нечестный** — может как сказать правду, так и соврать. Свидетели высказались друг о друге. Дана матрица claims размером n × n: - claims[i][j] = 1 — свидетель i утверждает, что j честный; - claims[i][j] = 0 — свидетель i утверждает, что j нечестный; - claims[i][j] = 2 — свидетель i ничего не сказал о j. О себе никто не высказывается: claims[i][i] = 2. Верните наибольшее число свидетелей, которые могут оказаться честными без противоречий с их же словами.
Пример 1
claims=[[2, 1, 0], [2, 2, 2], [2, 2, 2]] → 2

Все трое честными быть не могут: тогда 0 сказал бы правду о том, что 2 лжец. Если 0 честен, честны 0 и 1. Если 0 нечестен, честными могут быть 1 и 2. Больше двух не получится.

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

Каждый называет другого лжецом, поэтому оба честными быть не могут, а один — может.

Пример 3
claims=[[2, 2], [2, 2]] → 2
Ограничения
  • 2 ≤ n = len(claims) ≤ 15
  • len(claims[i]) = n
  • claims[i][j] — 0, 1 или 2
  • claims[i][i] = 2
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПереезды между офисами СложнаяXOR каждого подмножества ЛёгкаяНаборы с полным OR СредняяПерестрелять соперника СредняяСтолбцы, закрывающие строки Средняя
загружаем Python…
Вход
claims=[[2, 1, 0], [2, 2, 2], [2, 2, 2]]
Ожидается
2

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