zoukankan      html  css  js  c++  java
  • 第二周作业:返回一个整数数组中最大子数组的和

    1.设计思想:首先定义几个变量以及整形数组,依据输入函数,确定数组的大小,并且输入数组的数值。

    然后通过遍历数组的数值大小,比较出并找出子数组的最大值。

    出现的问题:定义数组的时候因为不规范,导致最后输入数值的时候出错,这是由于平时的习惯导致的,所以以后必须改变。

    其次就是for循环遍历子数组的时候,对于子数组的概念还没搞清楚就开始写代码,这是一个大忌,任何时候都应该先分析问题,然后才能去解决问题。

    源代码:

    package shuzu;
    
    import java.util.Scanner;
    
    public class ArrayMax {
        public static void main(String[] args){
            int number,maxsum,maxstart;
            int i;
            Scanner in = new Scanner(System.in);
            System.out.println("请输入数组的大小:");
            number=in.nextInt();
            int array[]=new int[number];
            System.out.println("请输入数组的值:");
            for(i=0;i<number;i++)
            {
                array[i]=in.nextInt();
            }
            maxsum=array[0];
            maxstart=array[0];
            for(i=1;i<number;i++)
            {
                if(maxstart<0)
                {
                    maxstart=0;
                }
                maxstart+=array[i];
                if(maxstart>maxsum)
                    maxsum=maxstart;
                
            }
            System.out.println("子数组的最大和为:");
            System.out.println(maxsum);
            in.close();
        }
    
    }

    全部是正整数的情况;

    这种情况最简单,把所有的数组中的数值便利一遍即可得到最大值。

    全是负数的情况:

    这种情况和全是正整数的情况刚好相反,只需要通过for循环比较找到最大的哪个负数,输出就行。

    有正有负:

    这种情况是最复杂的,我们大多数人可能都会解决前两种情况,解决这个问题,首先从第一个数开始遍历,遍历完之后,从第二个数开始遍历,直到遍历完最后一个数,

    在通过for循环比较出这些子数组中最大的那个输出就行。

     总结:老师刚开始说出这个问题的时候,不知道如何解决,他就建议我们,一点一点的去分析问题,通过分析问题,把他分为若干个小问题。

    1.想要完成这个题目首先要定义一个整数数组,这就要先定义几个变量。

    2.定义完数组之后,就要输入数值,通过Scanner a=new Scanner(System.in)输入数值。

    到这里问题已经解决了一部分,只剩下如何比较出最大的子数组

    3.通过分析,遍历所有的子数组,然后通过for循环比较出结果。

    这些都是我们以后要学习的宝贵经验,有利于解决未知的困难问题。 

  • 相关阅读:
    Java基础环境配置及HelloWorld
    Cassandra 在 360 的实践与改进
    如何构建阿里小蜜算法模型的迭代闭环?
    通用高效的数据修复方法:Row level repair
    RALM: 实时 Look-alike 算法在微信看一看中的应用
    人机对话技术研究进展与思考
    打造最可靠的自动驾驶基础架构
    Django中render和render_to_response的区别
    ui自动化chrome文件上传操作
    超继承super
  • 原文地址:https://www.cnblogs.com/1502762920-com/p/10502569.html
Copyright © 2011-2022 走看看