#include<stdio.h>
#include<stdlib.h>
/*!\func int MaxSubsequenceSum(const int a[],int n)
*\bref the problem about the max sum of subsequence
*\para[in] a[] : the sequence
*\para[in] n : the number of sequence
*\author zhangdy
*\date 2010-06-01
*\return int : the max num of subsequence
*/
int MaxSubsequenceSum(const int a[],int n)
{
int max = 0,sum = 0,i;
for(i=0;i<n;i++)
{
sum += a[i];
if(sum > max)
{
max = sum;
}
else if(sum < 0)
{
sum = 0;
}
}
return max;
}
/*! main func */
int main()
{
int a[] = {1,-2,3,8,-5,2,5,4,9,-11,22,31,23,-3,-31,-22,4};
int i;
int n = sizeof(a)/sizeof(int);
printf("a[]=");
for(i=0;i<n;i++)
{
static char separator = '{';
printf("%c%d",separator,a[i]);
separator = ',';
}
printf("}\n");
printf("the max sum is : %d",MaxSubsequenceSum(a,n));
system("pause");
return 0;
}
分享到:
相关推荐
C 最大子序列问题的几中算法-分治-联机算法
2010.09.07 用分治法求解最大子序列问题。...《数据结构与算法分析 C++描述》p42最大子序列问题的递归方法代码 2010.09.07 vector a的内容: 4 -3 5 -2 -1 2 6 -2 最大子序列和是:11 请按任意键继续. . .
通常,最大子序列和问题通过 Kadane's Algorithm(卡丹算法)可以在线性时间内O(n)解决,但实现常数时间的解决方案则需要特别的优化。然而,应该注意的是,对于大多数情况,常数时间复杂度是不现实的,因为至少需要...
利用C/C++语言解决最大子列和问题,在线处理-超简单的算法
总的来说,最大子序列和问题是一个基础但重要的算法问题,对于理解和掌握动态规划以及迭代方法有着积极作用。通过深入学习C++实现的这一算法,开发者不仅能提升编程技巧,还能锻炼问题解决能力,为解决更复杂的算法...
求最大子序列和的四个算法,通过对比,可以了解算法时间计算
最大子序列问题算法分析 最大子序列问题是计算机科学中的一种经典问题,旨在寻找给定整数序列中最大子序列的和。该问题可以使用多种算法来解决,包括穷举法、递归法等。在本文中,我们将对最大子序列问题的算法进行...
### 最大子序列和问题详解 #### 一、引言 最大子序列和问题是一个经典的计算机科学问题,涉及在一串整数(其中可能包括负数)中找到具有最大和的连续子序列。此问题不仅在理论研究中有重要意义,在实际应用如生物...
动态规划算法:最大子序列问题
最大子序列和问题(Maximum Subarray Sum Problem)是求解一个数组中连续子数组的和的最大值的问题。
最大子序列和问题,一个整形数组序列求一个不变顺序的相加最大和子序列。
动态规划是解决最大子序列和问题的最优算法之一。其核心思想是利用已计算出的子问题结果,避免重复计算,从而达到优化算法的目的。在这个问题中,我们可以通过维护一个变量,用来存储当前子序列的最大和,每当遇到新...
最大子序列问题是一种经典的算法问题,它涉及到对一维数组中的连续子序列进行求和,目标是找到和最大的那个子序列。在这个问题中,我们通常使用动态规划的思想来解决。以下是对最大子序列求和算法的详细解释: 1. *...
例如,注释提到的“最大子序列问题”,实际上在代码中似乎是在计算连续子序列的和,而不是找出最大子序列本身。此外,代码中有些地方语法不完整,可能是因为扫描错误,例如`intsum=0;for(i=0;i;i++){}mostEle(num);`...
在算法领域,最大子图形问题是一类典型的动态规划问题,主要涉及到二维数组或矩阵中的特定图形的求解。这类问题通常要求找到一个特定形状的最大连续子区域,如最大子正方形、最大子矩形、最大子三角形或最大子菱形。...
8. 重要性:最大子段和问题是一个经典的问题,解决该问题需要使用递归算法和分治法,这些技术在数据结构和算法设计中非常重要。 9. 应用场景:最大子段和问题有很多实际应用场景,如计算机视觉、图像处理、数据挖掘...
最大子序列和问题是一维数组中最长的连续子序列,使得子序列的和最大。最大子矩阵和问题是在二维矩阵中找到一个矩形区域,其内部元素之和最大。 1. **最大子序列和算法**: 在动态规划方法中,我们通常使用Kadane'...
2. 初始化两个下标变量`$start`和`$end`,用于记录最大子序列的起始和结束位置,初始值分别为0。 3. 遍历数组中的每个元素,将元素值累加到`$thissum`上。 4. 如果`$thissum`大于`$maxsum`,则更新`$maxsum`并记录...
cout整数序列最大子段和是:"; } void main(){ int n,a[100],m,maxsum; cout请输入整数序列的元素个数n"; cin>>n; cout请输入各元素的值:"; for(m=0;m;m++) cin>>a[m]; Maxsum(n,a); }