• 整数子数组求最大和添加验证


    实验要求:

    要求程序必须能处理1000个元素

    每个元素是int32类型的,出现子数组之和大于整形表示的最大范围会出现什么情况

    设计思路:

    首先进行数组的溢出处理,从小向大开始验证,直到程序处理时间较长。

    然后进行程序所支持的最大整数测试,因为结果或过程中所出现的最大数是无法预测的,所以只需确定最大的随机数范围。

    测试结果:

    100个数据:

     

    200个数据:

     

    500个数据:

     

    1000个数据:

     

    99999999999999999

     

     

    9999999999999999999

     

    package 子数组更改;

    import java.util.Scanner;

    public class zsz {

    /**

     * @param args

     */

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    Scanner A=new Scanner(System.in);

    System.out.println("请输入数组长度:");

    int n=A.nextInt();

    System.out.println("请输入数组数值范围:");

    int N=A.nextInt();

    int M=A.nextInt();

    int a[]=new int[n];

    int b[][]=new int[n][n];

    int i;

    System.out.println("数组为:");

    for(i=0;i<n;i++)

    {

    a[i]=N+(int)(Math.random()*(M-N));

    System.out.print(a[i]+" ");

    }

    System.out.println();

    int j,k=n,t;

    for(i=0;i<n;i++)

    {

    for(j=0;j<k;j++)

    {

    for(t=j;t<j+i+1;t++)

    {

    b[i][j]+=a[t];

    }

    }

    k--;

    }

    System.out.println("各子数组大小:");

    for(i=0;i<n;i++){

    for(j=0;j<n;j++){

    System.out.print(b[i][j]+" ");

    }

    System.out.println();

    }

    int p=b[0][0];

    int q=0,r=0;

    for(i=0;i<n;i++)

    {

    for(j=0;j<n-i;j++)

    {

    if(p<b[i][j])

    {

    p=b[i][j];

    q=i;

    r=j;

    }

    }

    }

    System.out.println(" 本数组中子数组和最大的为:"+p);

    System.out.println("这个子数组是:");

    for(i=0;i<q+1;i++)

    {

    System.out.print(a[r+i]+" ");

    }

    }

    }

    结果分析:

    处理最大数据问题:因为时间复杂度较高,所以在处理到500个数组长度的时候时间就超过10秒,1000个数据同样能处理,但因为数据太多,所以只能显示结果部分,前些部分不能在控制台显示出来。

    能处理得最大数:最大到99999999999999999还可以处理,如果数组范围在9999999999999999999便出现错误信息,

    Exception in thread "main" java.util.InputMismatchException: For input string: "9999999999"

    at java.util.Scanner.nextInt(Unknown Source)

    at java.util.Scanner.nextInt(Unknown Source)

    at 子数组更改.zsz.main(zsz.java:19)

    结组实现:

    代码部分:刘洪阳;测试部分:刘双渤。

     

  • 相关阅读:
    .NETCORE微服务架构--网关篇(Ocelot)
    Hangfire实战--添加DashBoard登录权限
    IIS发布-HTTP谓词限制访问
    基于Dapper的泛型Repository
    .Net Framework JWT验证
    .Net Framework swagger 进阶----头部参数
    .Net Framework下安装api swagger
    ErrorSet
    201907总结
    博客美化
  • 原文地址:https://www.cnblogs.com/luffyyang/p/4387691.html
Copyright © 2020-2023  润新知