Ctrl K

Покраска домов без одинаковых соседей

Сложная
Вдоль улицы в ряд стоят дома, и каждый нужно покрасить в один из k цветов. Цена различается: prices[i][c] — стоимость покраски дома i в цвет c. Два соседних дома не должны быть одного цвета. Верните наименьшую общую стоимость покраски всех домов. Попробуйте уложиться в O(n·k), где n — число домов.
Пример 1
prices=[[4, 1, 7], [2, 9, 3], [5, 1, 8]] → 4

Первый дом в цвет 1 (1), второй в цвет 0 (2), третий снова в цвет 1 (1): итого 4. Соседи разного цвета.

Пример 2
prices=[[1, 2], [1, 2], [1, 2]] → 4

Цвет 0 дешевле, но два соседа не могут быть одного цвета: 1 + 2 + 1 = 4.

Пример 3
prices=[[6, 3, 9, 2]] → 2
Ограничения
  • 1 ≤ n = len(prices) ≤ 100
  • 2 ≤ k = len(prices[i]) ≤ 20, у всех строк одна длина
  • 1 ≤ prices[i][c] ≤ 20
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВода между стенами СложнаяСамый большой горящий блок СложнаяПрибыль за две сделки СложнаяВсе способы расставить пробелы СложнаяПереход через пещеру Сложная
загружаем Python…
Вход
prices=[[4, 1, 7], [2, 9, 3], [5, 1, 8]]
Ожидается
4

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