软件工程1

题目要求:返回一个整数数组中最大子数组的和
具体要求:输入一个整形数组,数组里有正数也有负数;
     数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和;
     求所有子数组的和的最大值。要求时间复杂度为O(n);
设计思路:
(1)分别读入数组长度num、数组元素a[]和子数组长度znum
(2)循环读入znum个a[]求子数组和sum
(3)引入最大值max
(4)条件语句判断sum和max的大小
(5)判断后归零sum,循环比较得出结果
源代码:

复制代码
package kehouzuoye;
import java.util.*;

public class one 
{
    
  public static void main(String[] args)
  {      
      
    Scanner sc = new Scanner(System.in);    
    System.out.println("请输入数组长度:");
    int num=sc.nextInt();
    
    int a[]=new int[num];
    System.out.println("请输入整数数组元素:");
    for(int i=0;i<num;i++)
                 {
                     a[i]=sc.nextInt();
                 }
    
    System.out.println("请输入子数组长度:");
    int znum=sc.nextInt();
    
    int max=0,sum=0,count=0;
    max=a[0];
    
    for(int j=0;j<num;j++)
    {
        count++;
        sum+=a[j];
        if(count%3==0)
        {
            if(sum>max)
            {
                max=sum;
            }
            sum=0;
        }        
    }
    
    System.out.println("该整数数组中最大子数组的和为"+max);
    
  }
}
复制代码

效果图:

posted @ 2022-03-11 20:38  清梦韶华  阅读(20)  评论(0编辑  收藏  举报