软件工程第二周课上练习
设计思想:贪心算法。键盘输入定义数组的长度,for循环输入数组的值,定义两个sum,都赋予初值,for循环—如果初值1小于0,赋予初值1=0,初值1=初值1+数组第二个值,if判断初值1与初值2的大小,以此类推,最后输出初值2.
出现的问题,一开始两个初值都赋予的是0,所以当第一个数字是负数的时候会影响后边相加,使结果变小。
解决方案:将初值=数组第一个数的值。
源代码:
1 package 数组; 2 import java.util.Scanner; 3 public class Shuzu2 { 4 5 public static void main(String[] args){ 6 int number,maxsum,maxstart; 7 int i; 8 Scanner in = new Scanner(System.in); 9 System.out.println("请输入数组的长度:"); 10 number=in.nextInt(); 11 int array[]=new int[number]; 12 System.out.println("请输入数组的值:"); 13 for(i=0;i<number;i++) 14 { 15 array[i]=in.nextInt(); 16 } 17 maxsum=array[0]; 18 maxstart=array[0]; 19 for(i=1;i<number;i++) 20 { 21 if(maxstart<0) 22 { 23 maxstart=0; 24 } 25 maxstart+=array[i]; 26 if(maxstart>maxsum) 27 maxsum=maxstart; 28 29 } 30 System.out.println(maxsum); 31 in.close(); 32 } 33 }
运行结果截图:
总结:整体其他的比较基础,主要的运算部分我用的是贪心算法。