18. Грабитель домов#
| 🎯 Уровень | 🟠 Middle |
| 🔗 Источник | LeetCode 198 — House Robber |
| 📊 Сложность | Medium |
| 🏷️ Темы | динамическое программирование |
📝 Условие#
Нельзя грабить два соседних дома. Какую максимальную сумму можно унести?
Совет
На LeetCode
mainне нужен: данные приходят аргументами метода классаSolution.
Формат ниже — для запуска у себя черезcin/cout.
📥 Входные данные#
В первой строке число n (1 ≤ n ≤ 100). Во второй — n чисел (0 ≤ nums[i] ≤ 400) — деньги в домах.
📤 Выходные данные#
Одно число — максимальная сумма.
🧪 Тесты#
Тест 1#
Ввод:
4
1 2 3 1
Вывод:
4
Тест 2#
Ввод:
5
2 7 9 3 1
Вывод:
12
Тест 3#
Ввод:
1
5
Вывод:
5
Заметка
Оригинальное условие и проверка решения на всех тестах — по ссылке на источник.
💡 Подсказка#
Открыть, если застрял(а) больше чем на 20 минут
dp[i] = max(dp[i-1], dp[i-2] + a[i]).