软件工程第二周课上练习

  设计思想:贪心算法。键盘输入定义数组的长度,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 }

   运行结果截图:

   总结:整体其他的比较基础,主要的运算部分我用的是贪心算法。

原文地址:https://www.cnblogs.com/0518liu/p/10508201.html