第五周课堂测试

设计思想:

1、通过调用输入函数进行数组的录入;

2、利用课堂老师讲的动态规划对数组中的子数组进行求最大值操作;

*3、添加一个max0对曾经的最大值进行储存,避免出现最大值出现数组中间而导致的错过问题;

出现的问题:

好久不用eclipse了,很多基本的操作还需要重新温习才可以;

数字的输入代码通过上网查询才敲好;

可能的解决方案:

目前想不到在时间复杂度允许的范围内的其他的方法;

源代码:

package max;
import java.util.*;
public class Array_max {
    public static int Cin(int i){
        Scanner in=new Scanner(System.in);
        System.out.println("请输入第"+(i+1)+"个数");
        int b=in.nextInt();
        return b;
    }
    public static int Get(int len[],int num){
        int max = len[0];
        int max0=0;
        for(int i=1;i<num;i++){
            if(len[i]>0){
                max=max+len[i];
            }
            else{
                if(max>max0){
                    max0=max;
                }
                max=0;
            }
        }
        return max0;
    }
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        System.out.println("请输入数组数字个数:");
        int num=in.nextInt();
        int len[]=new int[num];
        for(int i=0;i<num;i++){
            len[i]=Cin(i);
        }
        int max=Get(len,num);
        System.out.print("子数组和的最大值为:"+max);
    }
}

结果截图:

总结:其实代码很简单,关键是思想很难想到,如果没有上课老师提点,估计只是想思路就要耗费大量时间!

原文地址:https://www.cnblogs.com/dawn-sky/p/5368998.html