zoukankan      html  css  js  c++  java
  • 02数组

    要求:

    输入一个整形数组,数组里有正数也有负数。

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

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

    设计思想:

    另设两个数组,一个记录和b[],一个记录当前子数组的个数c[]。如果原数组的第二个数加上第一个数的和小于第二个数,那么舍弃第一个数,当前子数组的个数为一。由此类推,直到遍历完所有数组。

    代码:

    #include<iostream>using namespace std;int max(int a,int b)
    {
       if(a>b)
       {
          return a;
       }
       else
       {
          return b;
       }
    }int maxsum(int a[], int n)
    {
       int i;
       int maxsofar = 0;
       int maxendinghere = 0; 
       for (i = 0; i < n; i++)
       {
          maxendinghere = max(maxendinghere + a[i], 0);
          maxsofar = max(maxsofar, maxendinghere);
       }
       return maxsofar;
    }int main()
    {
       int n, i=0;
       cout<<"请输入个数:";
       cin>>n;
       cout<<"请输入数组:";
       int a[100000]={0};
       for(i=0;i<n;i++)
       {
          cin>>a[i];
       }
       int max=maxsum(a, n);
       cout << "最大子数组的和为:" << max << endl;
       return 0;
    }
     
    运行结果:
    
    
     
    总结:

    通过此次练习,了解了如何使用算法的方法,控制时间复杂度等一些有要求的部分,通过观摩大佬的代码有了新的理解,对算法的作用的理解更加的深刻了,一定要加强算法思维的学习。

  • 相关阅读:
    编写你的应用程序(二)、原生客户端模块
    编写你的应用程序(一)、应用结构
    checkpoint机制,show engine innodb status
    InnoDB关键特性,innodb_old_blocks_time,锁,内存管理,latch争用
    Innodb引擎,MySQL修改参数
    MySQL数据库体系结构
    IT行业数据库分析
    生成一个千万行的表
    范式小知识
    MySQL触发器
  • 原文地址:https://www.cnblogs.com/Lhxxx/p/13237751.html
Copyright © 2011-2022 走看看