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 应用实例:最大子列和问题的主要内容,如果未能解决你的问题,请参考以下文章

实例1.1 最大子列和问题(20 分)浙大版《数据结构(第2版)》题目集

基础数据结构应用——最大子列和问题

绪论—最大子列和问题

从最大子列和问题看几种不同的算法思想

7-1 最大子列和问题

7-1 最大子列和问题 (20分)