zoukankan      html  css  js  c++  java
  • 返回一个整数数组中最大子数组的和。

    要求:

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

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

    3、如果数组A[0]......A[j-1]首位相邻,允许A[i-1],......A[n-1],A[0]......A[j-1]之和最大。

    4、同时返回最大子数组的位置。

    5、求所有子数组的和的最大值。

    思路:先定义数组个数和长度,通过For循环依次输入数组元素,然后定义Max并赋予第一个数组中的元素。如:int max=a[0];然后定义一个值为数组元素之和s,并且通过For循环和if让s值与max值比较,如if(s>max)则max=s。最后求最大子数组的和。

     定义数组的大致代码

    int length; 
    int n; 
    cout<<"请输入数组元素个数:"<<endl;
    cin>>length;
    n=2*length; 
    int *a=new int[n];

     定义s值,s值为数组元素之和并且与max值比较的大致代码

    int s=0;
    for( i=0;i<length;i++)
    {
    s=0; 
    for(int j=i;j<length+i;j++)
    {
    s=s+a[j];
    if(s>max)
    {
    max=s;

    }
    a[length+i]=a[i];
    }

  • 相关阅读:
    1619: 【例 1】Prime Distance
    Apache的架构师们遵循的30条设计原则(转帖)
    DP秒思维
    dsu on tree入门
    莫队入门
    行列式与霍尔基夫矩阵
    高精度板子
    splay入门
    回文自动机入门
    AC自动机
  • 原文地址:https://www.cnblogs.com/a-s-d/p/9906223.html
Copyright © 2011-2022 走看看