zoukankan      html  css  js  c++  java
  • 个人作业之最大子数组

    题目:返回一个整数数组中最大子数组的和。
    要求:
    输入一个整形数组,数组里有正数也有负数。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
    求所有子数组的和的最大值。要求时间复杂度为O()

    发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选)、源代码、结果截图、总结。

    1>设计思想

    1.首先定义循环,输入要处理的数组a[5];

    2.定义一个整型数b,初始化为0,和求最大子数组的sum,初始化为0,然后设置循环,每进行一次循环,b等于b加上a[i],如果sum小于b,sum

    等于b ,如果b小于0,b就等于下一个数。

    3.最后输出sum

    2>出现的问题

    如果输入的都是负数,结果为0

    3>解决方案

    将b初始化为a[0]

    4>源代码

    import java.util.*;

    /*

    求最大子数组问题

    要求数组中有正也有负数,如果全为负数,只需要找出

    最大的负数即可。

    */

    public class Shuzuhe {

             public static void main(String[] args){

                       Scanner sc=new Scanner(System.in); //可以读出输入的数

                      

                       int a[]=new int[5];//定义一个长为5 的数组,作为输入数组

                      

                       System.out.println("请输入要进行处理的数(5个):");

                       for(int i=0;i<5;i++)//输入5个数

                       {

                                a[i]=sc.nextInt();

                 }

                      

                      

                       int sum=a[0];//用于记录和

                       int b=0;//用于每次运算,找最大子数组

                      

                       for(int i=0;i<5;i++)

                       {

                                if(b<0)

                                {

                                         b=a[i]; //如果b<0,将b移到加为负数那位的后一位

                                }

                                else

                                {

                                         b+=a[i];

                                }

                               

                                if(sum<b)

                                {

                                         sum=b; //sum为当前最大子数组的和

                                }

                       }

                       System.out.print("最大子数组为:");

                       System.out.print(sum);

             }

    }

    4>结果截图

    5>总结

    这次没注意到将b初始化为a[0],所以造成全是负数时,结果为0

  • 相关阅读:
    TLS1.3&TLS1.2形式化分析(二)
    浏览器代理设置和取消代理
    jdk在window系统中的配置
    pycharm2017.3版本永久激活
    Scyther 形式化分析工具资料整理(三)
    百度快照的检索和反馈删除
    Scyther-Semantics and verification of Security Protocol 翻译 (第二章 2.2.2----2.3)
    双一流学校名单
    Scyther tools 协议形式化分析帮助文档翻译
    全国书画艺术之乡-----通渭
  • 原文地址:https://www.cnblogs.com/sz20142898/p/5364141.html
Copyright © 2011-2022 走看看