Python|最大子序和

前言最大字序和的思想用到了动态规划思想,本文章通过最大字序和例子来简单解释动态规划思想。动态规划指的是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推的方式去解决,就是将待求解的问题分解成未知个小问题,然后按照顺序求解小问题,前面解决的问题为后面一个问题的求解提供了有用的信息。动态规划的大致思路;首先拆分问题,根据问题的可能性把问题划分成一步一步这样就可以通过递推或者递归来实现。前面拆分的步骤之间的关系,用一种看得见的形式表现出来,就像高中学的推导公式。输出最优解问题描述给出一个整数数组 nums ,找到一个具有最大和的连续子数组返回其最大和。比如说[-2,1,-3,4,-1,2,1,-5,4],找出的最大字序和为6,分别由数组中的[4,-1,2,1]中的数相加输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解决方案对于数组求最大字序和的问题,我们先再给一个数组a来记录相加或者不变的状态,a[i]就为以nums[i]结尾的连续子数组最大和。首先我们先把数组a初始化为n个为o的列表,a = [0] * n,依次计算nums的长度,如果nums长度为1,则就把nums中的第一个元素与a列表中的第一个元素相加,结果就为[-2, 0, 0, 0, 0, 0, 0, 0, 0],再遍历1到n的数记为i,此时我们加入a[i-1]来与nums[i]形成联系,就好比上一个问题的解为下一个问题的解提供了有效的信息,我们再对a[i-1]进行判断,如果a[i-1]<0的话,那么此时a[i]就等于nums[i],就是在遍历出i时,我们查找a[i-1],开始i=1此时a[i-1]==-2<0,所以为负数就不进行相加,nums[i]==1,所以a[i]=nums[i]=1,如果a[i-1]>0,那么就要进行相加,例如当i=2时,a[1]==1>0,nums[2]==-3,则此时a[i]=a[i-1]+nums[i],所以就得到了a[2]=1+(-3)=-2此时a列表为[-2,1,-2, 0, 0, 0, 0, 0, 0],后面依次类推就可以得到[-2, 1, -2, 4, 3, 5, 6, 1, 5],这是a列表,其中最大的就为6,分别由连续四个[4,-1,2,1]相加得出的。结语本文章对动态规划思想进行了大致的解释,并用最大子序和来对动态规划思想进行了更好的阐述,不足就是在进行算法描述时不是很清楚,用了类比推理的思想,所以读者要更好地理解的话可能要在电脑上调试代码。附件最大子序和问题python代码nums =  [-2,1,-3,4,-1,2,1,-5,4]n = len(nums)if n == 1:print(nums[0])# a[i] 为以 nums[i] 结尾的连续子数组最大和a = [0] * n   # 初始化a数组为 n 个 0 的列表a[0] = nums[0]   #a列表中第一个元素为nums中的第一个元素# 遍历每一位for i in range(1,  n):# a[i-1]即以 nums[i-1] 结尾的子数组最大和# 如果a[i-1] 非正,则不加if a[i - 1] <= 0:a[i] = nums[i]# 如果正,则加起来else:a[i] = a[i - 1] + nums[i]print(a)  #打印出a列表print(max(a))  # 打印出a列表的最大值实习编辑:衡辉稿件来源:深度学习与文旅应用实验室(DLETA)

(0)

相关推荐

  • (1条消息) 动态规划就此一篇 全网最详细, 逐步理解, 万字总结

    文章目录 动态规划 - 超详细系列 首先,先大致列下这篇文章会讲到什么 1.相较于暴力解法,动态规划带给我们的是什么?为什么会有重叠子问题以及怎么去避免的? 2.用不同难度的动态规划问题举例说明, 最 ...

  • ​LeetCode刷题实战283:移动零

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战53:最大子序和

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • 动态规划答疑篇

    ----------- 这篇文章就给你讲明白两个问题: 1.到底什么才叫「最优子结构」,和动态规划什么关系. 2.为什么动态规划遍历 dp 数组的方式五花八门,有的正着遍历,有的倒着遍历,有的斜着遍历 ...

  • 经典动态规划:0-1 背包问题

    前言 经过前面三篇动态规划文章的介绍,相信大家对动态规划.分治.贪心有了充分的理解,对动态规划的 3 个核心问题.其本质也有了了解. 纸上得来终觉浅,绝知此事要躬行. 那么今天开始我们来聊聊具体的那些 ...

  • Python|动态规划之最大子序和

    题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和.示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组  ...

  • 狂草《李青莲序》终于用楷书注释好了,收藏吧!

    张旭(675年-约750年),字伯高,一字季明,汉族,唐朝吴县(今江苏苏州)人,开元.天宝时在世,曾任常熟县尉,金吾长史.以草书著名,与李白诗歌,裴旻剑舞,称为"三绝"  .诗亦别 ...

  • 赵孟頫书法长卷《归去来并序》神韵俱足,笔精墨妙,神气充足

    为什么赵孟頫的字能够成为经典? 为什么赵孟頫能够成为一代书法大家,看他的字,不难看出字的熟练和韵味. 以行书为主,间以草法,字字遒逸神韵俱足,笔精墨妙,神气充足. 赵孟頫,字子昂,汉族,号松雪道人 , ...

  • 《长白山赋》并序 吴兆骞

    <长白山赋>是清代吴兆骞创作的赋作品,出自<秋笳集>. 长白山者,盖东方之乔岳也.晋臣袁宏有言曰:东方,万物之所始.山岳,神灵之所宅.我国家肇基震域,诞抚乾图,景历万年,鸿规四 ...

  • Python|二叉树叶子结点问题解决方法

    问题描述键盘输入一颗二叉树,求解其叶子结点个数.示例: 输入:4,2,6,1,3,5输出:3解决方案一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称"叶子".当二叉树为空时 ...

  • 农 村 殡 葬 仪 式 及 程 序

    第一篇:农 村 殡 葬 仪 式 及 程 序 农 村 殡 葬 仪 式 及 程 序 (二零一一年十二月整理) 第一,上床. 需将正房明间整理好,将明间内的缸.柜和锅上一切用具等各种物品全部清出. 在明间中 ...

  • 《序卦传》的文字很少,却能帮助我们快速读懂《易经》的六十四卦

    <易经>一共有六十四卦,分为上经和下经,但却不是简单粗暴地拦腰砍断,而是上经三十卦,下经三十四卦.这就难免让人疑惑了,为什么要这么划分呢? 其实,不仅在划分上不能一分为二,整个<易经 ...

  • Python数据分析库有哪些?常见分类!

    众所周知,Python前景好.需求量大.薪资高.就业岗位多,除了基本的开发工作之外,还可以从事人工智能.数据分析.网络爬虫等岗位.那么说起数据分析,你知道Python常用数据分析库有哪些吗?我们一起来 ...