《软件工程》个人作业1----数组(返回一个整数数组中最大子数组的和)

个人作业1----数组

题型一:普通的整型数组

目标:

返回一个整型数组中最大子数组的和。

题目要求:

1.输入一个整型数组,数组中有正数也有负数。

2.数组中连续的一个或多个整数组成一个子数组,数组都有一个和。

3.求所有子数组和的最大值。要求时间复杂度为O(n)。

问题分析:

1.输入  

2.数组:整型 有正 有负  

3.子数组  

4.子数组和  

5.所有 子数组和 其中 的最大值

6.时间复杂度为O(n)

源代码:

import java.util.*;
public class Array1 {
    public static void main(String args[])
    {
        int []arr1;
        arr1=new int [100];
        int n;
        int sum;
        
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入您想要输入的个数:");
        n=sc.nextInt();
        for(int i=0;i<n;i++)
        {
            arr1[i]=sc.nextInt();
        }
        for(int i=1;i<n;i++)
        {
            if(arr1[i-1]+arr1[i]>arr1[i])
            {
                arr1[i]=arr1[i-1]+arr1[i];
            }
        }
    
         sum=-1000000;
         for(int i=0;i<n;i++) {
            if(sum<arr1[i]) {
                sum=arr1[i];
            }
         }
         System.out.print("整数数组所有最大子数组的和为:");
         System.out.println(sum);
    }

}

结果截图:

猜你喜欢

转载自www.cnblogs.com/wind-and-sky/p/12375875.html
今日推荐