给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和

//给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和
# include<stdio.h>
void main()
{
    int i,j,sum=0,sum1;
    int a[10]={1,-2,3,4,5,6,-7,8,9,-2};//数组要定义的时候直接全部赋值
    //int a[10];!!!!!
   // a[10]={1,-2,3,4,5,6,
//给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和
# include<stdio.h>
void main()
{
    int i,sum=0,sum1=0;
    int a[10]={1,-2,3,4,5,6,-7,8,9,-2};
    for(i=0;i<10;i++)
    {
       sum1=sum1+a[i];
       if(sum<sum1)
       sum=sum1;
       else if(sum1<0)//若当前求和为负数时,直接抛弃,置0.从0开始
       sum1=0;
    }
     printf("sum=%d",sum);
}

算法1的时间复杂度为O(N*N)

算法2为O(N)

一般时间复杂度看for循环,for循环嵌套时,时间复杂度乘法递增。

原文地址:https://www.cnblogs.com/sunmarvell/p/5966210.html