喷水装置(一)

描述
现有一块草坪,长为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

#include<stdio.h>
#include<math.h>
int main()
{
    int m,n;
    double a[601],p;
    scanf("%d",&m);
    for(int i=0;i<m;i++)
    {
        scanf("%d",&n);
        for(int j=0;j<n;j++)
        {
            scanf("%lf",&a[j]);
        }
        for(int j=0;j<n;j++)
        {
            for(int k=j+1;k<n;k++)
            {
                if(a[j]<a[k])
                {
                    p=a[j];
                    a[j]=a[k];
                    a[k]=p;
                }
            }
        }
        double w=20;
        int count=0;
        for(int j=0;w>=0;j++)
        {
            w=w-2*sqrt(a[j]*a[j]-1);
            count++;
        }
        printf("%d\n",count);
    }

    return 0;

}

猜你喜欢

转载自blog.csdn.net/qq_41611106/article/details/81202488