动态规划系列(4)——不相邻数最大和
给定数组A=[1,2,4,1,7,8,3],求出数组A中互不相邻的数的最大和。
例如:如果选择了8,则不能选择7和3,在本例中最大的和为1+4+7+3=15
分析,这是一道典型的使用动态规划求解的题目(当然能够使用万能的回溯法,但显然不是很棒),最优子结构为:
f(i)=max{f(i - 2) + A[i], f(i - 1)}
解释一下,对于第i位,如果选择A[i],则不能选择i-1位,因此有f(i - 2) + A[i],如果不选择A[i],则将该问题放缩到i-1,因此有f(i-1)。
对于边界情况,f(0) = A[0],f(1) = max{A[0], A[1]}
首先使用递归写法实现最基本的解法:
def f(i):if i == 0: return A[0]if i == 1:return max(A[0], A[1])return max(A[i] + f(i - 2), f(i - 1)}
使用递归的写法终归效率太低下了,因此接下来使用自底向上的迭代方法来实现这个问题,使用长度为len(A)的数组来保存中间的值:
import numpy as npA = [1,2,4,1,7,8,3]def non_rec_f():opt = np.zeros(len(A))opt[0] = A[0]opt[1] = max(A[0], A[1])for i in range(2, len(A)):opt[i] = max(opt[i - 2] + arr[i], opt[i - 1])return opt[len(A) - 1]
动态规划系列(4)——不相邻数最大和相关推荐
- 思考一道题:非相邻数最大和
给定一个整数的数组,相邻的数不能同时选,求从该数组选取若干整数,使得他们的和最大,要求只能使用o(1)的空间复杂度. (抽时间再看看 ) // 非相邻数最大和.cpp : 定义控制台应用程序的入口点. ...
- 动态规划系列问题—从小白到大佬的入门、进阶之旅!!!
前言 本篇文章写了将近一万五千字,整理了关于动态规划系列问题的绝大部分分支,包括动态规划的介绍,相关术语等基础内容,也有区间DP,状压DP等进阶知识. 不管你是刚学习该算法的小白,还是对该算法有了一定 ...
- java动态规划鸡蛋问题_动态规划系列/高楼扔鸡蛋问题.md · lipengfei/fucking-algorithm - Gitee.com...
# 经典动态规划问题:高楼扔鸡蛋 今天要聊一个很经典的算法问题,若干层楼,若干个鸡蛋,让你算出最少的尝试次数,找到鸡蛋恰好摔不碎的那层楼.国内大厂以及谷歌脸书面试都经常考察这道题,只不过他们觉得扔鸡蛋 ...
- 九十四、动态规划系列之路径问题
@Author:Runsen 在动态规划最短路径经常提及,在上几篇介绍过相关的最短路径的问题,介绍过使用Dijkstra算法去求解,但是Dijkstra算法是基于贪心算法,按路径长度递增的次序一步一步 ...
- CCF 201409-1 相邻数对
试题编号: 201409-1 试题名称: 相邻数对 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. 输入格式 ...
- CCF201409-1 相邻数对
试题编号: 201409-1 试题名称: 相邻数对 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. 输入格式 输入的第一 ...
- CCF201409-1 相邻数对(100分)【序列处理】
试题编号: 201409-1 试题名称: 相邻数对 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. 输入格式 ...
- CCF201409-1相邻数对(C语言)
题目 试题编号: 201409-1 试题名称: 相邻数对 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. 输入 ...
- python找列表中相邻数的个数_利用python求相邻数的方法示例
前言 本文主要给大家介绍了关于利用python求相邻数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 什么是相邻数? 比如5,相邻数为4和6,和5相差1的数,连续相差为1的 ...
最新文章
- 面试必过之消息中间件RabbitMQ面试总结大全!
- 二、华为云ModelArts零代码实现美食分类识别
- Spring学习网址
- JS----JavaScript中的作用域和作用域链
- 类型“unknown”上不存在属性“foreach”_JavaScript红宝书第四版精简解析系列--映射Map数据类型...
- 专访黄翀:东方航空到底用MongoDB做了什么,技术选型为何花落MongoDB?
- 为什么资源文件名以类型开头
- Android绘制基础及手写绘制实例
- 浅谈堆(2016-12-31 09:59)错误更改
- Win7 计算机中丢失api-ms-win-core-path-|1-1-0.dll
- 深度学习在内窥镜图像方面的研究:
- 四个方面分析SEO如何提高网站的权重
- 三大指数快速入门和应用
- 复习简记转发器、网桥、路由器、网关的功能
- ti ds90ub953 与ds90ub954 、ds90ub933的调试总结
- 2023年出入境政策-喜忧参半
- 医学生学计算机建议,医学生计算机能力的培养
- 【ps功能精通】1.简单了解PS
- 如何将Blender模型导入Panda3d
- hugetable和mysql区别_BigData-MySQL总结大全(一)苏暖人
热门文章
- python深度学习include框架_搞事情。《用Python实现深度学习框架》已出版上架。...
- Excel 条件格式查重问题
- std::tr1::function
- android 本地数据库持久化框架,android数据库持久化框架, ormlite框架,
- php开发地图导航,百度地图API使用方法详解
- 5首2021一些流行好听歌曲的吉他和弦
- 代码之外——名人哲语
- LT2611UXC 2-PORTLVDS 转HDMI2.0
- 钢条切割问题(自顶向下)
- 水果店怎么开业吸引客户来,水果店新店开业如何吸引客人