zoukankan      html  css  js  c++  java
  • 课堂练习:返回一个整数数组中最大子数组的和

    题目要求:输入一个整型数组,数组里有正数也有负数

            数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和

            求所有子数组的和的最大值,要求时间复杂度为O(n)

    设计思想

    求出所有连续子数组的和,然后进行比较。用array[0]来作为max的初始值.数组里有正数有负数,当与负数相加,如果和小于等于0,最大值等于未加负数之前的和,与正数相加则等于加正数之后的和。

    源代码

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     int i,n,sum=0;
     7     int array[1000];
     8     cout<<"请输入数组的长度:"<<endl;
     9     cin>>n;
    10     int max=array[0];
    11     cout<<"请输入数组内的数"<<endl;
    12     for(i=0;i<n;i++)
    13     {
    14         cin>>array[i];
    15     }
    16     for(i=0;i<n;i++)
    17     {
    18         if(sum<=0)
    19         {
    20             sum=array[i];
    21         }
    22         else 
    23         {
    24             sum=sum+array[i];
    25         }
    26         if(sum>max)
    27         {
    28             max=sum;
    29         }
    30     }
    31     cout<<"子数组和的最大值为"<<max<<endl;
    32     return 0;
    33 }

    结果截图:

    总结

    编程要善于思考,有了思路再去写,免得一直处于写了再改的模式,重在分析

  • 相关阅读:
    LFYZ-OJ ID: 1008 求A/B高精度值
    高精度运算
    【2018国庆雅礼集训】部分题解
    【模板】倍增求LCA
    Luogu1516 青蛙的约会
    loj #10043. 「一本通 2.2 例 1」剪花布条
    我太菜了
    Luogu1280 尼克的任务
    Luogu1091 合唱队形
    Luogu1006 传纸条
  • 原文地址:https://www.cnblogs.com/qianxia/p/5360455.html
Copyright © 2011-2022 走看看