51Testing软件测试论坛

标题: 一道PAT 1030完美数列 java实现 测试用例不通过 [打印本页]

作者: 测试积点老人    时间: 2022-1-17 11:24
标题: 一道PAT 1030完美数列 java实现 测试用例不通过

1030 完美数列 (25 分)
给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。

现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。

  1. import java.util.Scanner;
  2. import java.util.Arrays;
  3. public class Main{
  4.     public static void main(String[] args){
  5.         Scanner scan=new Scanner(System.in);
  6.         int N=scan.nextInt();
  7.         int p=scan.nextInt();
  8.         int[] a=new int[N];//a是用来存输入的数列的数组
  9.         int[] b=new int[N];//b是用来存对于任意的a中的元素,若将其作为最终数列的最小值,所对应的数列的最大长度的数组
  10.         for(int i=0;i<N;i++){
  11.             a[i]=scan.nextInt();
  12.         }
  13.         Arrays.sort(a);
  14.         for(int i=0;i<N;i++){
  15.             int count=0;//一开始数列的长度均为0
  16.             for(int j=i;j<N;j++){
  17.                 if(a[i]*p>=a[j]) count++;//如果最小值乘以参数仍大于当前元素,则数列长度加1(相当于把当前的元素选入数列)
  18.             }
  19.             b[i]=count;//把由当前a中的元素作为最小值的数列的最终长度存进b中
  20.         }
  21.         Arrays.sort(b);//把b升序一下,打印最后一个元素,也即理论上数列长度的最大值
  22.         System.out.println(b[b.length-1]);
  23.     }
  24. }//这段代码运行超时我可以理解,答案错误我是真想不到有什么特殊情况没有考虑到了。
复制代码

这个写法具体会出现什么问题?



作者: qqq911    时间: 2022-1-18 10:28
效率问题?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2