zoukankan      html  css  js  c++  java
  • 个人作业1-——数组

    1.问题

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

         要求: 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。

    2.问题分析和设计思想

          拿到这个问题首先是要有一个整形的数组,这个数组中有正数也有负数,并且概率完全相同。这就要用到生成随机数的Math.random()方法产生一个随机数,这个随机数有正有负,就用到一个if语句来决定这个随机数是正是负。最核心的是一个三层循环,最外层循环控制数组的头,中间层控制循环数组的尾,最内层控制数组从头加到尾。这样就实现了求全部子数组的和。然后通过不断比较就得到了最大子数组的和。

    3.源代码

       

    package shuzhu;
    
    import java.util.*;
    
    public class shuzhu {
         public static void main(String[] args)
         {
         Scanner input=new Scanner(System.in);
         System.out.print("请输入数组中数的个数:");
         int num=input.nextInt();
         int max=0;
         
         int a[]=new int[num]; 
         for(int i=0;i<num;i++)//循环生成num个随机数
         {   
             if((int)(Math.random()*2)==0)//先从0或1之间生成一个数,进而决定这个数的正负
            {
                a[i]=(int)(Math.random()*10);
            }
             else
             {
                 a[i]=-(int)(Math.random()*10);
             }
         }
         for(int i=0;i<num;i++)//循环输出生成的num个随机数
         {
            System.out.println(a[i]);
        }
         for(int b=0;b<num;b++)//最外层循环控制这个子数组的头
         {
            for(int c=b;c<=num;c++)//中层循环控制这个子数组的尾
            {
                int sum=0;
                for(int d=b;d<c;d++) //内层循环从头加到尾
                {
                     
                     sum=sum+a[d];
                    
                    if(max<=sum)//通过比较把最大的子数组和赋给max
                    {
                        max=sum;
                    }
                }
            }
         }
        
        System.out.print("子数组和的最大值为:"+max);
         }
    }

    4测试截图

    5总结

         我的这个是最笨的办法实现的这个程序,就是把全部可能的情况求出比较,要另外学习别人先进的思路方法。多多练习。

  • 相关阅读:
    NiosII软处理器快速入门- 10分钟学会NiosII(2)
    FFT算法的一种FPGA实现
    32个最热CPLDFPGA论坛
    NiosII软处理器快速入门- 10分钟学会NiosII(3)
    基于FPGA/CPLD设计与实现UART
    NiosII软处理器快速入门- 10分钟学会NiosII(1)
    LCD 的分类和显示原理
    iis6.0重写成html设置
    p标签之间的行距问题
    ie6 png图片透明方法
  • 原文地址:https://www.cnblogs.com/xuange1/p/10505996.html
Copyright © 2011-2022 走看看