算法第三章上机实践报告

Posted -kdj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法第三章上机实践报告相关的知识,希望对你有一定的参考价值。

1、实践题目:

最大子段和

2,问题描述:

 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。

要求算法的时间复杂度为O(n)。

3、算法描述:

定义两个数组a,b,a表示要输入的序列,b表示序列的子段和(比如b[3]表示a[1],a[2],a[3]的最大子段和),然后进行判断,如果前面的最大子段和大于0,则加上改最大子段和,若前面的最大子段和小于0,则不加,最后在判断该序列是否全部为负数,若是则输出0,若不是,则输出b[i]。

4、空间复杂度分析:

空间复杂度为O(n)。

5、代码描述:

#include <iostream>;
using namespace std;

int a[10000],b[10000];
int num=0;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
b[i]=max(a[i],b[i-1]+a[i]);
num=max(num,b[i]);
}
cout<<num;
return 0;
}

6、心得体会:

该题运用动态规划的思想解题,而且不会太难理解,与队友做完这道题后,感觉对自己理解动态规划的思想有所帮助。
















以上是关于算法第三章上机实践报告的主要内容,如果未能解决你的问题,请参考以下文章

揭露动态规划真面目——算法第三章上机实践报告

算法第三章上机实践报告

算法第三章上机实践报告

算法第三章上机实践报告

算法第三章上机实践报告

算法第三章上机实践报告