zoukankan      html  css  js  c++  java
  • 课堂练习三

    返回一个整数数组中最大子数组的和

    设计思路:只能遍历一周,设置一个当前最大值curMax和一个最大和Max,设置for循环进行遍历,当当前最大值大于等于0则继续累加,如果小于等于0则重置,到最后比较当前最大值和最大和,最后输出最大和。

    出现的问题:最大值初始不能设置为0。

    可能的解决方案:初始设置为最小整数min_value.

    源代码:

    package test1;
    
    import java.util.Scanner;
    
    public class Test {
    
        public static void main(String[] args) {
            int[]  list =new int[100];
            int length;
            Scanner input =new Scanner(System.in);
            System.out.println("请输入数组的长度:");
            length = input.nextInt();
            if(length<=0)
            {
                System.out.println("未输入数!");
            }
            else
            {
                System.out.println("请输入数!");
                for(int i=0;i<length;i++)
                {
                    list[i]=input.nextInt();
                }
            }
            input.close();
             // 记录最大的子数组和,开始时是最小的整数
            int max = Integer.MIN_VALUE;
            // 当前的和
            int curMax = list[0];
            // 数组遍历
            for (int i=0;i<length;i++) {
                // 如果当前和小于等于0,就重新设置当前和
                if (curMax <= 0) {
                    curMax = list[i];
                }
                // 如果当前和大于0,累加当前和
                else {
                    curMax += list[i];
                }
    
                // 更新记录到的最在的子数组和
                if (max < curMax) {
                    max = curMax;
                }
            }
            System.out.println("最大的子数组和:"+max);
    
        }
    
    }

    结果截图:

    总结:这个题目一开始听到确实一点头绪没有,或许是根本就没理解题目,不过在看了那么生动的演示后,大致懂了,回来试了一下,还是挺简单的,很好实现啊。

  • 相关阅读:
    《构建之法》阅读笔记4
    团队冲刺第七天
    团队冲刺第六天
    团队冲刺第五天
    团队冲刺第四天
    团队冲刺第三天
    构建之法阅读笔记03
    第十四周进度条
    第二阶段冲刺站立会议10
    第二阶段冲刺站立会议09
  • 原文地址:https://www.cnblogs.com/kt97458/p/5364843.html
Copyright © 2011-2022 走看看