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循环比较出结果。

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

  • 相关阅读:
    软件开发 —— 重构(refactor)
    语言与哲学 —— 维特根斯坦
    【撸码caffe 三】 caffe.cpp
    编程语言入门及进阶、设计模式、面向对象书籍
    用ISA2006配置单网卡缓存服务器
    Forefront TMG 之 ISP 冗余传输链路(ISP-R)
    MDT配置数据库
    MDT概念说明
    更改SQL实例端口
    SCCM2012安装、配置
  • 原文地址:https://www.cnblogs.com/1502762920-com/p/10502569.html
Copyright © 2011-2022 走看看