首页 存档 技术 查看内容

[算法]震惊!竟有人这样进行偷窃!

2018-3-30 13:00 |来自: 互联网 301 0

摘要: 假如你是一个偷窃犯,你想要在半夜偷华狮街上的房子内的金钱,每个房子内都有一定量的金额,但是如果你偷了连续相邻的两个房子,便会惊扰**。现在给定你N个房子,请问你要怎么偷窃才能在不惊扰**的情况下得到最 ...

假如你是一个偷窃犯,你想要在半夜偷华狮街上的房子内的金钱,每个房子内都有一定量的金额,但是如果你偷了连续相邻的两个房子,便会惊扰**。现在给定你N个房子,请问你要怎么偷窃才能在不惊扰**的情况下得到最多的金钱呢?


比如现在有十间房子,里面含有的金钱分别是:5,6,3,7,6,12,18,2,6,10 . 请问你怎么样才能偷得最多的钱呢?


答案是42。5 3 6 18 10 = 42,这个答案并不是那么好想,尤其是当N变得特别大的时候则更难想得到了。这时候我们就要思考怎么样让计算机帮我们进行计算。


实际上问题的解法可以从下面这两种情况得到:


1、倘若我们偷了上一个房子的钱,那么我们就无法偷当前房子的钱,最大收益就是到上个房子为止。


2、倘若我们偷了这个房子的钱,那么总收益就是这个房子加偷到上上个房子为止的钱的总额。


从这里我们可以得到一种递归的解决方法:


int rob(std::vector

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部