51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 978|回复: 1
打印 上一主题 下一主题

一道PAT 1030完美数列 java实现 测试用例不通过

[复制链接]
  • TA的每日心情
    无聊
    前天 09:47
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2022-1-17 11:24:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点

    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. }//这段代码运行超时我可以理解,答案错误我是真想不到有什么特殊情况没有考虑到了。
    复制代码

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


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 10:08
  • 签到天数: 1518 天

    连续签到: 2 天

    [LV.Master]测试大本营

    2#
    发表于 2022-1-18 10:28:53 | 只看该作者
    效率问题?
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-20 07:02 , Processed in 0.059428 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表