python求解最大子序列问题,子序列可连续或不连续
最大子序列问题在笔试中已经遇上过很多次了,今天只是想简单的总结一下,最大子序列主要分为两种类型:一种是子序列可以不连续的最大子序列和(这个比较简单,思路就是累加非负数即可)、另一种是子序列必须连续的最大子序列和(这个稍微复杂是一个动态规划问题),下面就简单就这两种问题做一下总结,具体看如下实现:
#!usr/bin/env python
#encoding:utf-8'''
__Author__:沂水寒城
功能:最大子序列问题
'''def test_func(num_list):'''求数组中最大子序列的和,子序列可以不连续(也可以写成if判断语句只累加整数即可)'''length=len(num_list)dp=[0]*lengthdp[0]=num_list[0]for i in range(length):dp[i]=max(dp[i-1]+num_list[i], dp[i-1])print dp[-1]def test_func2(num_list):'''求数组中最大子序列的和,子序列必须连续'''length=len(num_list)max_value=-10000000000tmp=0for i in range(length):tmp=max(tmp+num_list[i], num_list[i])max_value=max(max_value, tmp)print max_valueif __name__ == '__main__':num_list=[-4 , 3 ,56 , -15 , 34 , 0 , -14 , 4]test_func(num_list)print '----------------------------------------------------'test_func2(num_list)
结果如下;
97
----------------------------------------------------
78
[Finished in 0.3s]
当然最大子序列和问题也可以转化为最大子序列乘积问题
python求解最大子序列问题,子序列可连续或不连续相关推荐
- 用Python计算最长公共子序列和最长公共子串
如何用Python计算最长公共子序列和最长公共子串 1. 什么是最长公共子序列?什么是最长公共子串? 1.1. 最长公共子序列(Longest-Common-Subsequences,LCS) 最长公 ...
- 最长公共子序列、最长连续公共子序列、最长递增子序列
面试中除了排序问题,还会经常出现字符串的子序列问题,这里讲解使用动态规划解决三个常见的子序列问题: 1.最长公共子序列问题(LCS,longest-common-subsequence problem ...
- 求最长公共子序列python_用Python计算最长公共子序列和最长公共子串
1. 什么是最长公共子序列?什么是最长公共子串? 1.1. 最长公共子序列(Longest-Common-Subsequences,LCS) 最长公共子序列(Longest-Common-Subseq ...
- prefixspan是挖掘频繁子序列,子序列不一定是连续的,当心!!!
序列模式挖掘是从序列数据库中发现频繁子序列作为模式. 子序列与频繁序列 了解了序列数据的概念,我们再来看看上面是子序列.子序列和我们数学上的子集的概念很类似,也就是说,如果某个序列A所有的项集在序列B ...
- 动态规划——子序列问题——连续?不连续?
动态规划--子序列问题--连续?不连续? 子序列问题是动态规划的一个常考题型,本篇文章主要介绍 子序列(连续)和子序列(不连续)两个问题.连续和不连续指的是子序列是否是连续的,还是说中间是可以有间隔的 ...
- python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解
前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...
- python代码物理_利用python求解物理学中的双弹簧质能系统详解
前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...
- 最大公约数python语言算法_使用Python求解最大公约数的实现方法
这篇文章主要介绍了使用Python求解最大公约数的实现方法,包括用Python表示欧几里得算法和Stein算法的求解原理. 1. 欧几里德算法 欧几里德算法又称辗转相除法, 用于计算两个整数a, b的 ...
- 利用python求解节点介数和边介数
利用python求解节点介数和边介数 利用networkx里面的函数betweenness_centrality(G)来求解节点介数和函数edge_betweenness_centrality(G)来 ...
- python最大公约数计算_使用Python求解最大公约数的实现方法
1. 欧几里德算法 欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数.其计算原理依赖于下面的定理: 定理: gcd(a, b) = gcd(b, a mod b) 证明: a可以表示 ...
最新文章
- 一行代码都不写!Github 博客小白版入门教程
- mycat mysql 存储过程_MyCat 学习笔记 第十三篇.数据分片 之 通过HINT执行存储过程...
- 工作流引擎JFlow与activiti 对比分析(一)5种基本控制流模式的对比
- mysql导入分卷_php实现mysql备份恢复分卷处理的方法_PHP
- 用 python 制作高逼格的数学动画
- true,false组合问题
- 爬虫用java还是python_网络爬虫是用python比较好,还是Java比较好呢?
- mysql 存储过程创建以及调用
- H.264视频编码在VC .Net中的实现(H264全文)
- 2699元起!格力首款5G手机悄然上架:骁龙765G处理器
- mysql 输入密码后闪退_iPhone抹除还原后需要输入账号密码怎么办?
- 书籍-Java性能调优指南
- 以4%参数量比肩GPT-3!Deepmind 发布检索型 LM,或将成为 LM 发展新趋势!?
- 运维学习:常用运维工具
- erroe C1083:无法打开包括文件(源文件)
- 2019年广东当代优质民办学校获奖名单公布
- 2345广告,够了!
- 使用puppet自动化升级安全程序
- 2023年全国最新二级建造师精选真题及答案
- 蓝牙驱动卸载后自动安装_在安卓旧手机上安装「人人影视客户端」实现收藏后自动下载...