【问题标题】:Find Maximal values that can be acquired from N找到可以从 N 中获取的最大值
【发布时间】:2016-11-08 18:56:02
【问题描述】:

有 n 个房子 (1,2,3,...,n)。小偷必须从 1 号房屋开始并到达 n 号房屋才能偷到最多。他可以偷房子,他可以离开。如果他在任何房子里偷了东西,房主会通知左右的邻居。他最多能偷多少..

我们如何通过动态规划来解决..

【问题讨论】:

    标签: algorithm dynamic-programming


    【解决方案1】:

    arr[0..n-1] 表示从1n 的每个主机的端口数。

    在每一点上,您都有两种选择:扫描当前主机的所有端口或不扫描当前主机的端口。

    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

    【讨论】:

      猜你喜欢
      • 2020-10-15
      • 2023-01-25
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 2019-04-28
      • 2018-10-06
      • 1970-01-01
      • 2018-10-30
      相关资源
      最近更新 更多