码迷,mamicode.com
首页 > 编程语言 > 详细

软件工程概论-课后作业3(子数组求最大值)

时间:2016-04-08 20:07:19      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

【设计思路】

 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值进行比较

【总结】

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

软件工程概论-课后作业3(子数组求最大值)

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!