zoukankan      html  css  js  c++  java
  • 一维数组最大子数组(回调)

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

    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("
    ");        
                    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("
    ");        
                    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]+"	");
                }else
                {
                    a[i]=-(int)(Math.random()*(1000-1+1));
                    System.out.print(a[i]+"	");
                }
            }    
            System.out.println("
    ");
            System.out.println("最大值为:"+d1(a,x));
            System.out.println("
    会调至:");
            Scanner sc1 = new Scanner(System.in); 
            int y=sc1.nextInt();
            System.out.println("最大值为:"+d2(a,x,y));
        }
    }

  • 相关阅读:
    回调函数
    箭头函数和普通函数的区别?
    实现 (5).add(3).minus(2),使其输出结果为:6
    call 和 apply 的区别?哪个性能更好?
    用 JS 的 RegExp 进行正则判断,字符串内是否有特殊符号
    如何理解和描述“原型和原型链”
    JS 的防抖和节流
    Linux 服务器 关闭防火墙命令
    前端在Linux服务器搭建安装Nginx的步骤记录
    记录一些CSS的实用技巧
  • 原文地址:https://www.cnblogs.com/sonofdemon/p/10770797.html
Copyright © 2011-2022 走看看