问题标题: 酷町堂:3855

0
0
已解决
周明轩
周明轩
资深光能
资深光能

题目描述 Description

现在有n(不超过50000)个小数(小数点后有2位),范围在-9.99~9.99,不包含0,从大到小排序输出

输入描述 Input Description

第一行输入一个整数n(不超过50000)
接下来n行,每行输入一个小数(-9.99~9.99,不包含0)

输出描述 Output Description

排序后,输出n个空格隔开的小数,保留2位小数

样例输入 Sample Input

5 -1.10 2.51 -3.21 4.45 2.12

样例输出 Sample Output

4.45 2.51 2.12 -1.10 -3.21

 

 

怎么做,求思路。


0
已采纳
邹昊轩
邹昊轩
资深光能
资深光能

输入:for循环{

     cin>>a;
        b=b+10;
        a[int(b*1000)]++;

    }   

 

 

输出:

 for循环(int i=50000;i>=1;i--)
        for(int j=1;j<=b[i];j++)
        {
            cout<<(double)(i-10)/1000<<" "; 

0
0
张恩泽
张恩泽
高级天翼
高级天翼

用桶

先循环n次输入:

  for(循环n次)
    {
        输入t
        a[(int)(t*1000+10000)]++;
    }

这样输出:

  for(从19990循环到10){
        while(a[i]--){
            保留小数输出("%.2f ",(i-10000)/1000.0);
        }
    }

 

0
蔡乐毅
蔡乐毅
高级光能
高级光能

    for(int i=1;i<=n;i++){
        cin>>t;
        a[(int)(t*1000)+10000]++; 
    }
    for(int i=19990;i>=10;i--){
        while(a[i]--){
            printf("%.2f ",i/1000.0-10);
        }
    }

 

0
杜文博
杜文博
资深守护
资深守护

bool cmp(double &x,double &y)

{

return y>x;

}

for(int i=0;i<n;i++)

{

cin>>a[i];

}

sort(a,a+n,cmp);

for(int i=0;i<n;i++)

{

cout<<a[i]<<' ';

}

注意要加头文件#include<algorithm>

我要回答