求连续子数组的最大和C语言 算法:给定一个数组,找出最长连续子数组和为0的子序列?
浏览量:2451
时间:2021-03-11 08:01:25
作者:admin
算法:给定一个数组,找出最长连续子数组和为0的子序列?
让原始数组为a,遍历数组,并建立和序列s:s[0]=0,s[i]=s[i-1]a[i]。同时,s[i]的内容也记录i,然后s被稳定地排序。现在s可以分成许多段,每个段的数目是相同的。最长连续子阵的第一个数的下标和最后一个数的下标必须分别为一段中第一个数的I和最后一个数的I。计算每段中第一个数字的I和最后一个数字的I之差,取最大的一个。
设数组a是有n个元素的整数数组,从中找出最大和子序列?
Pascal语言不能,但是说“最大和子序列”意味着在一个数组中找到几个连续的数据,它们的和是最大的。也许我没说清楚,让我给你举个例子
例子:一个数组:2,4,-33,34,45,-23,7
数组中任意一个数的连续数据都是这个数组的子序列
34和45是和最大的子序列
所以要搜索的数组中必须有负数,否则会有负数没有最大和子序列(整个数组是最大的)
不是两个数字,而是任意长度的,找到任意长度的子序列
如果:2,4,-33,34,45,-10,12,-2
这不是真的,最大和子序列是:34,45,-10,12。理解的关键要素是:1。任意长度2。连续性
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。