数组课堂练习

设计思想:

数组内有正数有负数,先遍历寻找数组内第一个正数,并将其设置为最大值。开始往后加,一旦和是负数,就舍弃前边的数,从当前位置继续往后加,每一次相加后都会和最大值比较,如果小于最大值就不记录,不然记录为最大值。

代码:

import java.util.Random;

public class ArrayAdd {
    public static void main(String args[]){
            int a[]=new int[10];
            for(int i=0;i<10;i++)
            {
                a[i]=new Random().nextInt()%30;
                System.out.print(a[i]+" ");
            }
            System.out.println();
            int max=0;
            int Sum=0;
            int Start=0;
            int start=0;
            int end=0;
            for(int i=0;i<10;i++)
            {
                if(i==0)
                {
                    Sum=max=a[i];
                    continue;
                }
                     
                if(Sum<0)
                {
                    Sum=0;
                    Start=i;
                }
                Sum+=a[i];
                if(Sum>max)
                {
                    max=Sum;
                    start=Start;
                    end=i;
                }
            }
             
            System.out.println("和最大的子数组为:");
            for(int i=start;i<=end;i++)
            {
                System.out.print(ary[i]+"+");
            }
            System.out.print("="+max);
    }
}

截图:

总结:

要想解决问题,先学好数学。

原文地址:https://www.cnblogs.com/a1264393659/p/5368789.html