51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

一道PAT 1049数列的片段和 运行超时

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

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2022-1-17 11:05:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    1049 数列的片段和 (20 分)
    给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这 10 个片段。
    给定正整数数列,求出全部片段包含的所有的数之和。如本例中 10 个片段总和是 0.1 + 0.3 + 0.6 + 1.0 + 0.2 + 0.5 + 0.9 + 0.3 + 0.7 + 0.4 = 5.0。
    1. /**
    2. 统计数列中每个元素出现的次数,然后乘以这个数列元素,再求和。
    3. 那么对于求每个元素出现的次数这个问题,我们先假定由这么一个数列,我们从1到n依次为其元素建立索引值,例如第一个元素索引值就是1,最后一个就是n。使用数组来存储这个数列时,数组的索引值时会被-1的,所以要再加上1。
    4. 对于其中的任意一个元素,假设其索引值为i。发现若数列片段的首项的索引值超过i时,这个片段一定不会“囊括”该元素;同时发现,当数列片段的首项的索引值不超过i时(不妨假设为k,称之为次首项数列),所有的以k为首项的数列片段,一定都“囊括”了该元素,且“囊括”的次数由从该元素开始到数列尾项的个数决定,即(n-i+1)次(与首项索引值无关,称之为囊括次数)。那么该元素总共出现的次数就是这样所有的次首项数列的个数乘以囊括次数。那么该元素在片段和总和中造成的影响即为该元素值ai*(n-i+1)*i
    5. */
    6. import java.util.Scanner;
    7. import java.text.DecimalFormat;
    8. public class Main{
    9.     public static void main(String[] args){
    10.         Scanner scan=new Scanner(System.in);
    11.         int n=scan.nextInt();
    12.         double sum=0;
    13.         double[] a=new double[n];
    14.         DecimalFormat df=new DecimalFormat("0.00");
    15.         for(int i=0;i<n;i++) a[i]=scan.nextDouble();
    16.         for(int i=0;i<n;i++){
    17.             sum+=a[i]*(i+1)*(n-i);
    18.         }
    19.         String str=df.format(sum);
    20.         System.out.println(str);
    21.     }
    22. }
    23. 我原来的代码是三循环,超时了,但是这个为什么也会超时?不会超时的算法应该是什么?
    复制代码


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

    使用道具 举报

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

    连续签到: 2 天

    [LV.Master]测试大本营

    2#
    发表于 2022-1-18 10:28:01 | 只看该作者
    试试分段计算呢
    回复

    使用道具 举报

    本版积分规则

    关闭

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

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

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

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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