一、测试题目
找出一个整数数组中子数组之和的最大值(子数组定义,相邻的各个元素组成的数组)
二、题目分析
上课时的思路
将数组从第一个开始分别求相邻2、3、4...到length个数的和,然后再依次从2、3...开始就各子数组的和,
将各个子数组数组和放到另一数组里,求最大值并返回
三、程序代码
#include<stdio.h> #define N 100 int k=0; int bigest(int a[],int length) { int i; int j; int b[1000]; if(length==0||a==NULL) { printf("输入数组为空!"); return 0; } for(i=1;i<=length;i++) { b[k]=a[i-1]; for(j=i;j<=length;j++) { k++; b[k]=b[k-1]+a[j]; } } printf("各子数组的和为: "); for(i=0;i<k-1;i++) { printf("%d ",b[i]); } int max=b[0]; for(i=0;i<k-1;i++) { if(b[i]>max) {max=b[i]; } } return max; } int main() { int i; int max; int length; int a[N]; printf("请输入数组元素个数:"); scanf("%d",&length); printf("请输入数组元素: "); for(i=0;i<length;i++) scanf("%d",&a[i]); max=bigest(a,length); printf(" 最大子数组和为%d ",max); return 0; }
四、运行截图