cning_123 2016-08-18 15:25 采纳率: 0%
浏览 1030
已结题

java 喷泉装置问题ACM

描述
现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1<i<600)个,并且一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润。
输入
第一行m表示有m组测试数据
每一组测试数据的第一行有一个整数数n,n表示共有n个喷水装置,随后的一行,有n个实数ri,ri表示该喷水装置能覆盖的圆的半径。
输出
输出所用装置的个数
样例输入
2
5
2 3.2 4 4.5 6
10
1 2 3 1 2 1.2 3 1.1 1 2
样例输出
2
5

然后我写的代码如下:
import java.lang.reflect.Array;
import java.math.*;
import java.util.Arrays;
import java.util.Scanner;
public class test6 {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int m=sc.nextInt();//m组测试数据
sc.nextLine();
while(m>0){
int n=sc.nextInt();//有n个喷水装置
sc.nextLine();
String str=sc.nextLine();//n个喷水装置的半径
//System.out.println(str);
String[]r=new String[n+2];
r=str.split(" ");

        double[]ri=new double[n+2];

        for(int i=0;i<n;i++){
            ri[i]=Double.parseDouble(r[i]);//把字符串转换成double

        }
        //System.out.println();
        Arrays.sort(ri);

        double sum=0;//计算几个半径的和
        int p=n+2;
        while(sum<10){
            p--;

            sum+=(double)(Math.sqrt(ri[p]*ri[p]-1));

        }
        System.out.println(sum);
        System.out.println(n+2-p);
        m--;
    }
}
public static double cal(double d){
    double num=0;
    num=Math.sqrt(d*d-1);
    return num;
}

}
不知道哪里出了问题总是会有这个提示错误:
在eclipse上面自己手动测试是没有问题的,但是提交到acm在线测试系统就是wronganswer。。。各位大神能不能帮忙试试看哪里出了纰漏。谢谢了

  • 写回答

2条回答 默认 最新

  • threenewbee 2016-08-18 15:31
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用