1.3 应用实例:最大子列和问题
Posted lynn-2019
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.3 应用实例:最大子列和问题相关的知识,希望对你有一定的参考价值。
一共讲了4个时间复杂度。
不说别的,我是对时间复杂度有了新的认识。
时间复杂度为n的可通过代码(在线处理算法):
从头遍历数组,加到thissum中,
thissum>maxsum则用thissum替换maxsum,
thissum<0则说明不能使结果增大,清空thissum,
最后得到正确的maxsum。
线性算法,在任何地方停止输出,算法都能给出正确结果。
但不易理解(
1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 const int K=100000; 5 int main(){ 6 int n; 7 scanf("%d",&n); 8 int a[K]; 9 for(int i=0;i<n;i++){ 10 scanf("%d",&a[i]); 11 } 12 int thissum=0,maxsum=0; 13 for(int i=0;i<n;i++){ 14 thissum+=a[i]; 15 if(thissum>maxsum){ 16 maxsum=thissum; 17 } 18 else if(thissum<0){ 19 thissum=0; 20 } 21 } 22 printf("%d ",maxsum); 23 return 0; 24 }
以上是关于1.3 应用实例:最大子列和问题的主要内容,如果未能解决你的问题,请参考以下文章