//给定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循环嵌套时,时间复杂度乘法递增。