C语言:数组中相邻元素持续相加,求其最大值!

来源:互联网 发布:爱国为主题的电影知乎 编辑:程序博客网 时间:2024/06/07 06:38

例:
输入:{-3,1,4,-2,5,-9}
输出:{1,4,-2,5}

/**设数组元素为n, 那么此序列的长度, 会>=1, 且<=n.如果最大元素为m, 那么此序列的和肯定>=m。如果m的值>0, 此序列的头和尾的值都>0。如果m的值<=0,则此序列就是元素m本身。**/#include <iostream>using namespace std;int main(){    int arr[10]={1,5,-7,3,2,-7,4,-1,-1,2};    int i=0,index=0,index_max=0,len=0,len_max=0;    int sum=0,sum_max=0;    int max_arr = arr[0], max_arr_index = 0;;    for(i=0; i<10; i++)    {        if(max_arr<arr[i]) // 获取所有数值中的最大值        {            max_arr = arr[i];            max_arr_index = i;        }        sum+=arr[i];        if(sum<0)        {            index = i+1;            sum = 0;            len = 0;        }        else        {            len++;        }        if(sum_max<sum)        {            sum_max = sum;            index_max = index;            len_max = len;        }    }    if(max_arr <= 0)    {        sum_max = max_arr;        index_max = max_arr_index;        len_max = 1;    }    //cout<<sum_max<<endl<<index_max<<endl<<len_max<<endl;    cout << "sum_max = " << sum_max << endl;    for(i=index_max;i<len_max;i++)    {        cout << arr[i] << " ";    }    cout << endl;    return 0;}
0 0
原创粉丝点击