zoukankan      html  css  js  c++  java
  • 一维数组子数组之和

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

    要求:

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

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

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

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

    设计思想:

    生成数组,生成子数组,求和,求最大值。

    代码:

    package bao;
    import java.util.*;
    public class Msum
    {
    	public static void main(String args[])
    	{
    		Scanner input=new Scanner(System.in);
    		System.out.println("请输入一维数组元素个数:");
    		int num=input.nextInt();
    	    int Array[]=new int[num];
    	    for(int i=0;i<num;i++)
            {
                if((int)(Math.random()*2)==0)
                {
                    Array[i]=(int)(Math.random()*30);//30元素最大值
                }
                else
                {
                    Array[i]=-(int)(Math.random()*30);
                }
            }
            for(int i=0;i<num;i++)
            {
                System.out.println(Array[i]);
            }
            //sun[]子数组,Sum子数组元素和,找最大值maxSum
            int Sum=0,maxSum=0;
            int i=0;
            for(i=0;i<num;i++)
            {
            	Sum+=Array[i];//累加
            	if(Sum<0)//当前和小于0,重置
            	{
            		Sum=0;
            		
            	}
            	if(Sum>maxSum)
            	{
            		maxSum=Sum;
            	}
            }
            if(maxSum==0)//最大和依然为0,说明数组中元素都为负值
            {
            	maxSum=Array[0];
            	for(i=0;i<num;i++)
            	{
            		if(Array[i]>maxSum)
            		{
            			maxSum=Array[i];//最大元素即为maxSum
            		}
            	}
            }
            //输出maxSum
            System.out.println("最大子数组之和:"+maxSum);
            
            
    	}
    	
    
    }
    

      截屏:

    总结:

    子数组的生成:当累加和小于零是不能是值增大,重置。

    扩展可以显示和最大的子数组,及其开始结束下标。

    团队照片:

  • 相关阅读:
    【并查集】亲戚
    【图论】Car的旅行线路 NOIP 2001
    【贪心】排座椅
    【DP】花店橱窗布置
    【NOIP】NOIP考纲总结+NOIP考前经验谈
    【NOIP】考前须知
    NOIP 2016 PJ T4 魔法阵
    NOIP 2016 PJ T3 海港
    【高精度】麦森数 NOIP 2003
    【带权并查集】食物链 NOIP 2001
  • 原文地址:https://www.cnblogs.com/sunmei20142925/p/5393209.html
Copyright © 2011-2022 走看看