软件工程概论个人作业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 }
结果截图:






浙公网安备 33010602011771号