首页 > 其他 > 详细

返回一串字符串的最大值。

时间:2016-04-08 19:30:15      阅读:263      评论:0      收藏:0      [点我收藏+]

1.定义一个vector数组,向里面赋值。然后去除数组末尾的负数。如果全是负数,找到最大的。然后从头相加,直到和为负数,,并重新开始累积和,并随时与当前最大值比较。

2.源代码

#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;

void main()
{
    vector <int> Array;       //声明vector数组。
    int temp = 0;    //用于输入。
    int sum = 0;    //储存当前最大和。
    int max = 0;    //储存最大和。
    cout << "请输入几个整数(用空格隔开,以字符结束)" << endl;
    while(cin >> temp)
    {
        Array.push_back(temp);    //将数字进栈到Array中。
    }
    if(Array[Array.size() - 1] < 0)
    {
        max = Array[Array.size() - 1];
    }
    while(Array[Array.size() - 1] < 0)    //去除数组末尾的负数。如果全是负数,找到最大的。
    {
        if(max <= Array[Array.size() - 1])
        {
            max = Array[Array.size() - 1];
        }
        Array.pop_back();
        if(Array.size() == 0)
        {
            cout << "最大子数组和为:" << max << endl;
            return;
        }
    }
    for(int i = 0;i < Array.size();i++)
    {
        if(sum < 0)    //如果当前数组和小于零,重置sum。
        {
            sum = 0;
        }
        else
        {
            sum += Array[i];
        }
        if(sum > max)    //当前和与最大值比较。
        {
            max = sum;
        }
    }
    cout << "最大子数组和为:" << max << endl;
    vector<int>().swap(Array);    //释放vector数组。
}

3.结果截图

技术分享

技术分享

技术分享

返回一串字符串的最大值。

原文:http://www.cnblogs.com/shenshenxin/p/5369145.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!