Пусть arr[0..n-1]
обозначает число портов для каждого из хостов из 1
в n
.
В любой момент у вас есть два варианта: сканировать все порты для текущего хоста или не проверять порты для текущего хоста.
Позвольте dp[]
быть результирующим массивом.
Очевидно,
dp[i] = max(dp[i-1], arr[i] + dp[i-2])
dp[i-1]
для случая, когда вы не сканировать порты. arr[i] + dp[i-2]
при сканировании портов для текущего хоста. В этом случае вы не можете добавить dp[i-1]
из-за ограничения, что последовательные хосты не могут быть отсканированы. Поэтому мы добавляем dp[i-2]
.
Вашего окончательный ответ dp[n-1]
Надеется, что это помогает !!
Редактировать: Ниже вопрос совпадает с вашими:
Есть ˝n˝ домов, построенных в линию, каждый из которых содержит некоторое значение в нем. Вор собирается украсть максимальную ценность в этих домах, но он не может украсть в двух смежных домах, потому что владелец похищенного дома скажет своим двум соседям по левой и правой стороне. Какова максимальная украденная стоимость?
Найти решение here