蓝桥杯Python 最大连续区间和[动态规划]

简介: 蓝桥杯Python 最大连续区间和[动态规划]

be前言:期末临近,恰好明天考Python,今天就有时间做题了,希望对大家有帮助....(周五考完就可以全面备战蓝桥杯了= =)

问题描述:给定一段长度为N的整数序列A,请从中选出一段连续的子序列(可以为0)使得这段的总和最大

a29bcedbac5040f0af4bf2b283ad87e4.png这里就不提暴力法了,只能在OJ系统里得10分(等于没写.........)下面呈现代码:

N=int(input().strip())
A=list(map(int,input().strip().split()))#输入格式
A.insert(0,0)#初始化
N+=1
dp=list(range(N))#dp[i]代表第i个数字结尾的序列最大值
dp[0]=0
if max(A)<=0:#如果全部是负数则不取 输出0
    print(0)
else:
    for i in range(1,N):
        dp[i]=max(A[i],dp[i-1]+A[i])#下面细说
    print(max(dp)) if max(dp)>0 else print(0)#如果最大子序列和小于0 那就干脆不取 0大于负数
#细说:、
#dp[i]表示第i个数字结尾的子序列最大值
#分析 设第i个数字为a[i] ①dp[i]=a[i]或
(设以a[i]结尾的区间序列和为s1,s2,s3...sn,所以dp[i-1]=max(s1,s2,....sn)
dp[i]=max(s1+a[i],s2+a[i]...sn+a[i])=a[i]+max(s1,s2..sn)
#即 ②dp[i]=a[i]+dp[i-1] 
#故第i个数字为结尾的子序列有两类 所以取较大的值即可

代码核心就是递推关系 上面已经给出证明 欢迎向我提出问题!我是小郑  

相关文章
|
Python
蓝桥杯练习题(一):Python组之入门训练题
这篇文章是关于蓝桥杯Python组的入门训练题,包括Fibonacci数列、圆的面积、序列求和和A+B问题的具体代码实现和样例输出。
406 0
|
算法 测试技术 C++
【动态规划算法】蓝桥杯填充问题(C/C++)
【动态规划算法】蓝桥杯填充问题(C/C++)
|
算法 Java C++
【潜意识Java】蓝桥杯算法有关的动态规划求解背包问题
本文介绍了经典的0/1背包问题及其动态规划解法。
479 5
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
802 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
323 2
|
存储 算法 Python
【10月更文挑战第16天】「Mac上学Python 27」小学奥数篇13 - 动态规划入门
本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念,并解决一个经典问题:斐波那契数列。学生将学习如何使用动态规划优化递归计算,并掌握编程中的重要算法思想。
289 3
|
人工智能 Python
蓝桥杯练习题(四):Python组之历届试题三十题
关于蓝桥杯Python组历届试题的三十个练习题的总结,包括题目描述、输入输出格式、样例输入输出以及部分题目的解题思路和代码实现。
640 0
蓝桥杯练习题(四):Python组之历届试题三十题
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(二):Python组之基础练习三十题
蓝桥杯Python编程练习题的集合,包含了三十个不同难度的编程题目,覆盖了基础语法、数据结构和算法等领域。
491 0
|
6月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
825 102
|
6月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
414 104

推荐镜像

更多