zoukankan      html  css  js  c++  java
  • 软件工程个人作业04

    设计思想

    用户设定数组长度及其数值,定义sum的初值为0,max初值为数组第一个数,所求子数组的初始位置为0,进行一次遍历,sum依次与数组的数叠加,若和为正数,则证明目前的子数组之和为最大。若和为负数,则记此位置为startIndex,即记录下一个位置的数,当sum大于max时,给max赋值,记此位置为endIndex,如此进行一次循环即可。

    出现的问题

    用户输入数组数值可能会越界

    可能的解决方案(多选)

    判断用户输入数的个数,错误时重新输入。

    源代码

    import java.util.Scanner;
    public class Submax {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner in = new Scanner(System.in);
            System.out.println("please input the number of the array date");
            int a=in.nextInt();
            int []date=new int[a];
            System.out.println("input the number (Int):");
            for(int i=0;i<a;i++)         //用户输入数字
            {
                date[i]=in.nextInt();
            }
            int sum=0,max=date[0];
            int startIndex=0,endIndex=0;
            for(int i=0;i<a;i++)        //进行一次遍历
            {
                if(sum>=0)
                {
                    sum+=date[i];         //和为正数时一直相加
                }
                else
                {
                    sum=date[i];
                    startIndex=i;         //和为负数时记录下一个数
                }
                if(sum>max)
                {
                    max=sum;
                    endIndex=i;            //求最大值
                }
            }
            System.out.println("the max subarray is:");
            for(int i=startIndex;i<=endIndex;i++)
            {
                System.out.println(date[i]+"  ");//输出子数组
            }
            System.out.println("the max is:"+max);
        }
    
    }

    结果截图

    总结

    许多看起来很难的程序也会有简单的解决之道,需勤动手动脑。

  • 相关阅读:
    面试官问:MySQL锁与事物隔离级别你知道吗?
    MySQL性能优化 — 实践篇2
    asp.net大文件(视频)上传讨论
    asp.net大文件(视频)上传分享
    asp.net大文件(视频)上传问题
    asp.net大文件(视频)上传方法
    asp.net大文件(视频)上传思路
    asp.net大文件(视频)上传功能
    asp.net大文件(视频)上传教程
    ckeditor粘贴word文档图片的源代码
  • 原文地址:https://www.cnblogs.com/love528/p/5368991.html
Copyright © 2011-2022 走看看