题目:给定一个数组,求出子数组的最大值。
分析:对数组的各子数组进行划分,对所有的情况进行比较,具体代码如下:
#include<stdio.h>
#define N 4
int main()
{
int a[N];
int i,j;
int max=a[0];
printf("请输入%d个整数:",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++){
int sum=0;
for(j=i;j<N;j++)
{
sum=sum+a[j];
if(sum>max)
max=sum;
}
}
printf("最大的子数组是:%d
",max);
return 0;
}
此代码可基本完成题目的要求,而且代码的数目也比较少,比较清晰,各种情况均有测试。代码的复杂度为n^2,老师要求为线性的,所以代码还有待于完善。