标签:
设计思想:
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); } }
结果截图:
总结:其实代码很简单,关键是思想很难想到,如果没有上课老师提点,估计只是想思路就要耗费大量时间!
标签:
原文地址:http://www.cnblogs.com/dawn-sky/p/5368998.html