标签:心得 实验报告 问题 第三章 最大值 mil 时间 收获 时间复杂度
实践报告任选一题进行分析。内容包括:
最大子段和
给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。
要求算法的时间复杂度为O(n)。
for(i=1;i<=n;i++)
cin>>a[i];
ma=b[1]=a[1];
for(i=2;i<=n;i++){
if(b[i-1]<=0)
ma=b[i-1]=0;
b[i]=b[i-1]+a[i];
if(b[i]<0){
i++;
b[i]=a[i];
}
ma=max(ma,b[i]);
}
时间复杂度:算法中只用到一维数组的遍历,因此时间复杂度为O(n);
空间复杂度:使用一维数组b[]存放字段和,空间复杂度为O(n)。
小组讨论收获匪浅。
标签:心得 实验报告 问题 第三章 最大值 mil 时间 收获 时间复杂度
原文地址:https://www.cnblogs.com/sufeifan1020/p/9938684.html