zoukankan      html  css  js  c++  java
  • 软件工程概论-课后作业3(子数组求最大值)

    【设计思路】

     1.用户初始化一个数组

     2.定义tempmax作为临时最大值,定义最大值max,初始均为array[0]

     3.使用循环从array[1]开始,判断tempmax值为正或负,若为正tempmax为正,tempmax值变为tempmax加上遍历的数,若tempmax值为负,tempmax值变为遍历的那个数。

     4.比较max和tempmax值大小,若max小将tempmax值赋给max

    【程序源代码】

    import java.util.*;
    
    public class MaxsArray 
    {
        public static void main(String args[])
        {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你要求子数组最大值的数组长度:");
            int length = sc.nextInt();
            int array[] = new int[length];
            
            System.out.println("请输入你要求子数组最大值的数组的数:");
            for(int i=0;i<length;i++)
            {
                array[i] = sc.nextInt();
            }
            
            int max = array[0];
            int tempmax = array[0];
            
            for(int i=1;i<length;i++)
            {
                if(tempmax<0)
                {
                    tempmax = array[i];
                }
                else
                {
                    tempmax+=array[i];
                }
                if(tempmax>max)
                {
                    max = tempmax;
                }
            }
            System.out.println("子数组的最大值为:"+max);
        }
    }

    【结果截图】

     

    【出现错误】

     之前没有设定tempmax,若max值为正,当遍历数为负时,输出结果有误

    【解决方案】

     加入tempmax和max值进行比较

    【总结】

     遍历求和使问题简单的解决,所以选择好的算法对一个程序实现非常重要。

  • 相关阅读:
    JAVA类型转换
    ASCII码表
    Java运算符的优先级(从高到低)
    Java内各种进制的表示
    java 标识符命名规则
    Java介绍(重要特点)
    多线程
    Mac&iOS之多线程--转自http://geeklu.com/2012/02/thread/
    00002-20180324-数组-列表
    00001-20180324-从列表中获取单个元素
  • 原文地址:https://www.cnblogs.com/Againzg/p/5369710.html
Copyright © 2011-2022 走看看