软件工程概论-课后作业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值进行比较

【总结】

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

原文地址:https://www.cnblogs.com/Againzg/p/5369710.html