zoukankan      html  css  js  c++  java
  • 求最大子数组的和

    1.设计思想:

     从数组的第一个数开始依次相加,在上次相加的和为正数的情况下,如果下一个数正数,则最大子数组的和为二者相加;如果下一个数为负数,则最大子数组的和还是原来的取值。

    如果上次相加的和为负数且下一个数为正数,就取下一个数的值为最大;如果下一个数也为负数,则比较选出大的那个作为最大子数组的和。

    2.出现的问题,输入全为负数时,最大子数组的和为0

    3.解决方案:将数组的第一个数赋值比较的第一个数

    源代码:

    package test;
    import java.util.Scanner;
    public class maxsum {
      public static void main(String[] args){
          int N;
          Scanner in=new Scanner(System.in);    
          System.out.println("请输入数组长度");
          N=in.nextInt();
          int i;
          int array[]=new int [N];
          System.out.println("请输入数组:");
          for(i=0;i<N;i++)
          {
              array[i]=in.nextInt();
          }
          maxsum p=new maxsum();
          System.out.print("子数组最大的和为:  "+p.max(array,N));
       
      }
    }
    class max
    {
        int max(int list[],int length)
        {
            int i;
            int maxss=list[0];
            int max=list[0];
            //设最大值为list[0]
            for(i=1;i<length;i++)
            {
                if(max+list[i]>=list[i])
                {
                    if(list[i]<0&&maxss<max+list[i])
                        maxss=max;
                    max=max+list[i]; 
                }
                else
                    max=list[i];
                
            }
            return max;
        }
    }

    截图:

  • 相关阅读:
    剑指offer——包含min函数的栈
    剑指offer——顺时针打印矩阵
    剑指offer——二叉树的镜像
    剑指offer——树的子结构
    爬虫的单线程+多任务异步协程:asyncio 3.6
    爬虫中的模拟登陆,IP代理,线程池
    爬虫-数据解析
    爬虫基础
    Markdown语法
    Git
  • 原文地址:https://www.cnblogs.com/yanyuqing/p/5367880.html
Copyright © 2011-2022 走看看