整数数组中最大子数组求和02

设计思路:

在“整数数组中最大子数组求和01”的基础上完成本次实验。

本次实验的关键在于如何判断结束。

经设计,程序结束条件有两种:1.截取部分有重复;2.循环完整两次。

满足其中任一条件则循环结束。

 

代码:

//20160327
#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
    int arr[100];
    int NUM = 0;
    int MAXSUM = 0;
    int MINNUMend = 0;
    int MINSUM = 0;
    int SUM = 0;
    int jump = 0;
    int start = -1;
    for (; NUM < 100; NUM++)
    {
        cin >> arr[NUM];
        if (getchar() == '\n')
        {
            break;
        }
    }
    if (NUM == 100)
    {
        NUM = 99;
    }
    for (int i = 0;; i < NUM ? i++ : i = 0)
    {
        if (i == 0)
        {
            jump += 1;
            if (jump == 3)
            {
                break;
            }
        }
        if (start == i)
        {
            break;
        }
        SUM = min(SUM + arr[i], arr[i]);
        if (MINSUM > SUM)
        {
            MINNUMend = i;
        }
        MINSUM = min(SUM, MINSUM);
        if (start == -1)
        {
            start = 0;
        }
        if (SUM >= 0)
        {
            start = i;
        }
    }
    SUM = 0;
    jump = 0;
    start = -1;
    for (int i = MINNUMend;; i < NUM ? i++ : i = 0)
    {
        if (i == MINNUMend)
        {
            jump += 1;
            if (jump == 3)
            {
                break;
            }
        }
        if (start == i)
        {
            break;
        }
        SUM = max(SUM + arr[i], arr[i]);
        MAXSUM = max(SUM, MAXSUM);
        if (start == -1)
        {
            start = MINNUMend;
        }
        if (SUM <= 0)
        {
            start = i;
        }
    }
    cout << "最大和:" << MAXSUM << endl;
    return 0;
}

 

 

测试截图:

 

此次结对编程队友杨安琪http://www.cnblogs.com/ning-JML/p/5326332.html

 

posted @ 2016-03-26 17:48  里拉里拉  阅读(206)  评论(2编辑  收藏  举报