c++动态规划解决一系列数中互不相邻数字之和的最大值

该博客介绍了如何使用C++实现动态规划算法,求解给定序列中互不相邻数字之和的最大值。通过分析每个数字的选择与不选择,得出递推公式并编写代码实现,最终展示运行结果并验证正确性。
摘要由CSDN通过智能技术生成

c++动态规划解决一系列数中互不相邻数字之和的最大值

问题描述

给定一系列数字{1,2,4,1,7,8,3},要求其中互不相邻的数字之和的最大值。

解决思路

针对每一个数字,可以分为选择或者不选择的情况,由于其中会存在包含关系,所以我们从最后一个数字开始分析。假设i个数中不相邻数字之和的最大值为opt(i),第i个数字为arr(i).则对于第七个数字“3”,可以分为两种情况:

  1. 选择第七个数字“3” ,那么第六个数字“8”一定不能选,七个不相邻数字之和的最大值opt(7)变为前五个不相邻数字之和的最大值opt(5)和3的和,即opt(5)+3
  2. 不选第七个数字“3” ,那么七个不相邻数字之和的最大值opt(7)变为前六个不相邻数字之和的最大值opt(6)
    综合上述,即可得到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值