软件工程概论个人作业04(最大子数组)

设计思想:1、定义一个数组,先设置循环输入数组的值,

          2、在设置一个循环,定义一个整型变量w并初始化为0,依次相加,w等于相加的和,如果相加的值小于0,则w等于这个子数组的下一个数,如果没有出现小于0的情况则一直相加,

          3、再定义一个整型变量sum并初始化为0,如果sum小于b的值,则令其等于w,最后输出sum即最大子数组的值

可能出现的问题:如果输入的结果全为负数,最后结果是0

解决方案:sum初始化为shuzu[0]

源代码:

复制代码
 1 import java.util.Random;
 2 import java.util.Scanner;
 3 
 4 
 5 import java.util.*;
 6 public class Test {
 7 
 8     public static void main(String[] args) {
 9         // TODO 自动生成的方法存根
10         int []shuzu=new int[10];
11         
12         int i;
13         for(i=0;i<10;i++)
14         {
15             System.out.println("请输入第"+(i+1)+"个值");
16             Scanner input=new Scanner(System.in) ;
17             shuzu[i]=input.nextInt();
18             
19         }
20         int w=0;
21         int sum=shuzu[0];
22        
23         for(i=0;i<10;i++)
24         {
25             if(w<0)
26             {
27                 w=shuzu[i];
28             }
29             else
30             {
31                 w+=shuzu[i];
32             }
33             if(sum<w)
34             {
35                 sum=w;
36             }
37         }
38         
39         System.out.println("最大子数组和为"+sum);    
40 
41     }
42 }
复制代码

结果截图:

 

 

 

原文地址:https://www.cnblogs.com/CkmIT/p/6694869.html