首页 > 编程语言 > 详细

一维数组最大子数组(回调)

时间:2019-04-25 20:50:07      阅读:80      评论:0      收藏:0      [点我收藏+]

今天做出一维数组的最大子数组的回调查询,我先是循环输出了每个数组的和及最大数组,最后输入回调查询,代码如下:

package mypackage;
import java.util.Scanner; 
public class e {

    public static int max(int a[],int n) //判断大小
    {
        int x=a[0];
        for(int i=0;i<=n;i++)    
        {
            if(a[i]>x) {x=a[i];}                
        }
        return x;
    }
    
    public static int add(int a[],int i,int j) //加和
    {
        int x=a[i],p;
        for(p=i+1;p<=j;p++)
        {
            x=a[p]+x;
        }
        return x;
    }
    
    public static int d1(int a[],int n) 
    {
        int i=0,j,b,c=0;
        int []x=new int[1000];
        for(i=0;i<=n-1;i++)
        {
            for(j=n-1;j>=i;j--)
            {
                x[c]=add(a,i,j);
                int m=i+1,h=j+1;
                c++;
                System.out.println("第"+c+"个数组:"+"第"+m+"个元素至第"+h+"个元素,和为"+add(a,i,j));
                System.out.println("最大值为:"+max(x,c-1));        
                System.out.print("\n");        
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace(); 
                }
            }
        }    
        return max(x,c);    
    }
    
    public static int d2(int a[],int n,int o) 
    {
        int i=0,j,b,c=0;
        int []x=new int[1000];
        for(i=0;i<=n-1;i++)
        {
            for(j=n-1;j>=i;j--)
            {
                x[c]=add(a,i,j);
                int m=i+1,h=j+1;
                c++;
                if(c>=o)
                {
                System.out.println("第"+c+"个数组:"+"第"+m+"个元素至第"+h+"个元素,和为"+add(a,i,j));
                System.out.println("最大值为:"+max(x,c-1));        
                System.out.print("\n");        
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace(); 
                }
                }
            }
        }    
        return max(x,c);    
    }
    
    public static void main(String[] args) {
        int []a=new int[1000];
        Scanner sc = new Scanner(System.in); 
        System.out.println("请输入个数:");
        int x=sc.nextInt();
        for(int i=0;i<=x-1;i++)
        {
            if((int)(Math.random()*(2-1+1))==1) {
                a[i]=(int)(Math.random()*(1000-1+1));
                System.out.print(a[i]+"\t");
            }else
            {
                a[i]=-(int)(Math.random()*(1000-1+1));
                System.out.print(a[i]+"\t");
            }
        }    
        System.out.println("\n");
        System.out.println("最大值为:"+d1(a,x));
        System.out.println("\n会调至:");
        Scanner sc1 = new Scanner(System.in); 
        int y=sc1.nextInt();
        System.out.println("最大值为:"+d2(a,x,y));
    }
}

技术分享图片

 

一维数组最大子数组(回调)

原文:https://www.cnblogs.com/sonofdemon/p/10770797.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!