数组中求子数组和最大

要求数组中子数组和的最大值用了两次循环的办法,

方案1:块内先比较大小,一块一块的进行,需要嵌套循环

方案2:两个数的子数组先比较,然后三个数的,四个数的.....再比较,可以不嵌套循环但感觉不够方便,所以没用。

方案1,2见图片分析

源码:

#include<iostream>
using namespace std;
int max()
{
    int h=10;
    int a[10]={9,-3,-4,5,6,-67,-8,-9,0,-12};//定义数组
    int n=a[0];
    for(int i=0;i<h;i++)//循环比较
 {
       int m=a[i];
       for(int j=i+1;j<h;j++)
    {
          m=m+a[j];//数据累加
       if(m>=n)
     n=m;
    }
 }
    for(int j=0;j<h;j++)//与每个数组成员比较,看哪个最大
         if(a[j]>n)
        n=a[j];
    return n;
}
int main()
{
    int b=max();
    cout<<b<<endl;
    return 0;
}

测试数据:0,-1,-2,-3,-4,-5,-6,-7,-8,-9          输出:0;

测试数据:1,2,5,-9,0,-2,-6,-7,-8,-11; 输出:8;

测试数据:-1,2,5,0,-2,10,-5,-6,-7,5;    输出:15;

原文地址:https://www.cnblogs.com/lpjdbk/p/3591746.html