zoukankan      html  css  js  c++  java
  • 整数数组中最大子数组求和02

    设计思路:

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

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

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

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

    代码:

     1 //20160327
     2 #include<iostream>
     3 #include<algorithm>
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     int arr[100];
     9     int NUM = 0;
    10     int MAXSUM = 0;
    11     int MINNUMend = 0;
    12     int MINSUM = 0;
    13     int SUM = 0;
    14     int jump = 0;
    15     int start = -1;
    16     for (; NUM < 100; NUM++)
    17     {
    18         cin >> arr[NUM];
    19         if (getchar() == '
    ')
    20         {
    21             break;
    22         }
    23     }
    24     if (NUM == 100)
    25     {
    26         NUM = 99;
    27     }
    28     for (int i = 0;; i < NUM ? i++ : i = 0)
    29     {
    30         if (i == 0)
    31         {
    32             jump += 1;
    33             if (jump == 3)
    34             {
    35                 break;
    36             }
    37         }
    38         if (start == i)
    39         {
    40             break;
    41         }
    42         SUM = min(SUM + arr[i], arr[i]);
    43         if (MINSUM > SUM)
    44         {
    45             MINNUMend = i;
    46         }
    47         MINSUM = min(SUM, MINSUM);
    48         if (start == -1)
    49         {
    50             start = 0;
    51         }
    52         if (SUM >= 0)
    53         {
    54             start = i;
    55         }
    56     }
    57     SUM = 0;
    58     jump = 0;
    59     start = -1;
    60     for (int i = MINNUMend;; i < NUM ? i++ : i = 0)
    61     {
    62         if (i == MINNUMend)
    63         {
    64             jump += 1;
    65             if (jump == 3)
    66             {
    67                 break;
    68             }
    69         }
    70         if (start == i)
    71         {
    72             break;
    73         }
    74         SUM = max(SUM + arr[i], arr[i]);
    75         MAXSUM = max(SUM, MAXSUM);
    76         if (start == -1)
    77         {
    78             start = MINNUMend;
    79         }
    80         if (SUM <= 0)
    81         {
    82             start = i;
    83         }
    84     }
    85     cout << "最大和:" << MAXSUM << endl;
    86     return 0;
    87 }
    View Code

    测试截图:

    此次结对编程队友为 李娜。

    http://www.cnblogs.com/linanil/p/5323599.html

  • 相关阅读:
    Boost.Asio c++ 网络编程翻译(10)
    建站手册:网站品质
    建站手册-template
    CDN:分类
    CDN:BootCDN 项目列表-摘录-20180405
    CDN:BootCDN
    CDN:目录
    CDN-template
    JavaScript-Tool:md5.js
    Regexp-Utils:基本
  • 原文地址:https://www.cnblogs.com/ning-JML/p/5326332.html
Copyright © 2011-2022 走看看