求最大子序列的和

来源:互联网 发布:mac双系统切换windows 编辑:程序博客网 时间:2024/06/07 03:04

输入一组整数,求出这组数字子序列和中的最大值,只要求出最大子序列的和。

例如:

序列:-2, 11, -4, 13, -5, 2, -5, -3, 12, -9,则最大子序列和为21。

序列:0, -3, 6, 8, -20, 21, 8, -9, 10, -1, 3, 6, 5,则最大子序列和为43。

代码:

#include<iostream>#include<vector>using namespace std;int main(){    int num;    //int N = 10;    vector<int> seq;    cout << "please enter a sequence:(enter 0 is meaning stop)"<<endl;    while (cin >> num)    {        if (num != 0)            seq.push_back(num);        else            break;    }    int N = seq.size();    int max = 0;    for (int i = 0; i <N ; i++)    {        int sum = seq[i];        for (int j = i+1; j < N; j++)        {            sum += seq[j];            if (sum>max)            {                max = sum;            }        }    }    cout<<"max="<<max<<endl;    return 0;}

图片描述

原创粉丝点击