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 }

    结果截图:

    总结

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

  • 相关阅读:
    向量场中的积分
    Oracle 动态视图4 V$SESSION_WAIT & V$SESSION_EVENT
    Oracle 动态视图3 V$SESSION
    Oracle 动态视图2 V$LOCKED_OBJECT
    Oracle 摘去数据块的面纱
    Oracle 动态视图1 V$LOCK
    Oracle Lock 概述
    Oracle 监听动态注册与静态注册
    Oracle用户进程跟踪
    Oracle SGA参数调整
  • 原文地址:https://www.cnblogs.com/qianxia/p/5360455.html
Copyright © 2011-2022 走看看