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

    题目:返回一个一维整数数组中最大子数组的和。

    要求:

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

    一维数组首尾相接,象个一条首尾相接带子一样。

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

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

    设计思想:

    首先利用动态数组node[NUM],将这个数组的长度输入,然后再输入数组中的每一个整数值。定义整型summax,将二者都初始化为node[0],sum用于存储子数组中前n项不为零的和,max用于存储最大值。定义一个整型temp.利用for循环,循环结束条件为:i<2*NUM-1Temp=i。循环中有一个判断:iftemp>=NUMtemp - = NUM。(这样就将这个数组首尾相连了)每一次循环中,先判断sum是否小于0,是将node[ i ]的值赋给sum,否则sum=sum+node[ i ],然后判断max的值是否小于sum,是,执行max=sum

    源代码:

    //chenchang  20143051  2016.4.5
    //返回一个整数数组中最大子数组的和
    #include<iostream>
    using namespace std;
    2int main()
    {
        int NUM;
        cout<<"Please input length of array:阰";
        cin>>NUM;
        int *node=new int [NUM];
        for(int i=0;i<NUM;i++)
        {
            cout<<i+1<<" input:";
            cin>>node[i];
        }
        //////////
        int sum=node[0];
        int max=node[0];
        for(int i=1;i<NUM;i++)
        {
            if(sum>0)
                sum=node[i]+sum;
            else 
                sum=node[i];
            if(max<sum)
                max=sum;
        }
        cout<<"Max:"<<max<<endl;
        delete [] node;
        return 0;
    }

    结果截图:

    图一:

     

    图二:

     

    图三:

     

  • 相关阅读:
    性能测试
    领域驱动设计(DDD)的实际应用
    Js模块模式
    Roslyn and NRefactory
    前端与后端分离的架构实例3
    angular + easyui 做界面验证
    java.lang.OutOfMemoryError: unable to create new native thread(转)
    oracle client server那点事
    一次处理ORA-07445的历险记(转)
    一条执行4秒的sql语句导致的系统问题 (转)
  • 原文地址:https://www.cnblogs.com/cchjl/p/5396165.html
Copyright © 2011-2022 走看看