长度为n的数组有正有负,找出元素之和最大的子数组
2014-11-18 10:01
239 查看
//长度为n有正有负,元素之和最大的子数组 #include <stdio.h> void main() { void MaxSum(int array[],int length); int a[10]={2,1,-9,-2,8,6,-3,3,2,-16}; MaxSum(a,10); } void MaxSum(int array[],int length) {//i1记录最大子数组最后一个元素的位置,count1记录最大子数组的个数 int i,i1,count=0,count1=0,NowSum=0,Max=0; if(array==NULL || length==0) return; for(i=0;i<length;i++) { NowSum+=array[i]; count++; if(NowSum<0) { NowSum=0; count=0; } if(NowSum>Max) { count1=count; i1=i; Max=NowSum; } } if(Max==0) {//如果数组全部为负数,找出最大的那个负数 Max=array[0]; for(i=1;i<length;i++) { if(array[i]>Max) Max=array[i]; } } printf("Max=%d,从第%d个元素开始,长度为%d的子数组的和最大。\n",Max,i1-count1+2,count1); }
相关文章推荐
- 从长度为M的无序数组中找出N个最大的数
- 长度为n的整形数组,找出其中的任意n-1个数乘积最大的那一组
- 长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可 以用除法。要求对算法的时间复杂度和空间复杂度作出分析,可以写思路也可以写程序。
- 求长度为n的数组中,加和最大的子数组
- 有一个array的数组,长度为10000,大小不一,用算法找出该数组中的最大值。
- 长度为M的数组A,找出位置N,使得A[0]...A[N-1]和A[N]...A[M - 1]的和的乘积为最大。
- char数组最大长度
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数
- C语言实现:统计字符串中字母个数,找出最大字符数组
- 数组中最大和的子数组
- 给定两个有序的n长度的数组,如何找出这两个数组合并后的中位数?
- 数组中最大和子数组
- 数组应用:找出最大值
- 一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值 比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1; {3,6}{2,4,3} m=2 {3,3}{2,4}{6
- 有一个长度是101的数组,存在1~100的数字,有一个是重复的,找出重复出来
- 数组中选第k个最小的数和子数组的最大和
- 找出字符串中对称的子字符串的最大长度(最长回文)
- 一个能将给定非负整数数组中的数字排列成最大数字的函数(数组元素长度随机)
- 找出一个整型数组中元素最大值,使用面向对象方法
- 给定一个数组,找出这个和最大的连续子数组的和