码迷,mamicode.com
首页 > 编程语言 > 详细

返回一个整数数组中子数组的最大值

时间:2017-12-06 21:53:24      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:自动生成   随机数   void   stat   设计思想   最大值   string   main   技术分享   

要求:

输入整数数组,子数组求和,求子数组的最大值,时间复杂度为0,

设计思想:

随机生成N个整数,规定子数组的个数最大值为3的随机值,先生成一个数n1,在用for循环将前n个数向加赋值给sun[i],再生成一个随机数n2,,将n1到n2 之间的数相加赋值给sun[j++],依次循环,如果n1+n2+······大于N那将最后的和在赋值给sun[j],然后判断sun[]中的最大值,最后输出

public class Test {
    /**
     * @param args
     */
    final static int N=10;
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        int[] a=new int[N];
        int j=0;
        int k;
        int l=0;
        int[] sum ={0,0,0,0,0,0,0,0,0};
        System.out.print("数组:");
        for(int i=0;i<N;i++)
        {
            a[i]=(int) (Math.random()*40-20);
            System.out.print(a[i]+" ");
        }
        System.out.println();
        k=(int) (Math.random()*3+1);
        j=k;
        for(int i=0;i<N;)
        {    
            sum[l]=sum[l]+a[i];
            if(i<j)
            {    
                i++;
            }
            if(i==j)
            {
                j=j+k;
                k=(int) (Math.random()*3+1);
                l++;            
            }
            if(j>N)
            {
                j=N;
            }
            

        }
        System.out.print("子数组:");
        for(int i=0;i<l;i++)
        {
            System.out.print(sum[i]+"  ");
        }
        System.out.println();
        int max=sum[0];
        for(int i=0;i<l;i++)
        {
            if(sum[i]>max)
                max=sum[i];
        }
        System.out.print("最大子数组:"+max);
    }

}

结果:

技术分享图片

 

返回一个整数数组中子数组的最大值

标签:自动生成   随机数   void   stat   设计思想   最大值   string   main   技术分享   

原文地址:http://www.cnblogs.com/wj1998/p/7994577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!