问题标题: 酷町堂:3853

0
0
已解决
赵泰来
赵泰来
高级光能
高级光能

桶:

#include<bits/stdc++.h>
using namespace std;
double t;
int a[9990],n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>t;
        a[(int)t*1000]++;
    }
    for(int i=1;i<=1000;i++){
        for(int i=0;i<=a[i];i++){
            printf("%.2f ",(double)i/1000);
        }
    }

    return 0;
}


1
已采纳
朱子尘
朱子尘
初级光能
初级光能

要用“桶”。注意:t是double类型。再输入时强转成int,还要乘1000,即:

a[(int)(t*1000)]++; 

输出时用printf,记住那个i要除以1000.0,是除以1000.0

朱子尘在2020-03-02 22:03:56追加了内容

你这有太多错误了,总共7处

1.数组小了定义成10000     第4行

2.我上面讲过,漏括号      第9行

3.这一行有两个错误i=什么;i<=什么,因为要乘1000,所以i=什么。最大的9.99乘1000等于?,所以i<=?     第11行

4.又是两个错误,你第一层循环用i,第二层也用i?j=1!!!!,这很重要      第12行

5.我上面也讲过,是i/1000.0!!!!!!

0
张帆
张帆
中级天翼
中级天翼
 for(int i=1;i<=1000;i++){
        for(int i=0;i<=a[i];i++){
            printf("%.2f ",(double)i/1000);
        }
    }

这个只用单重循环

条件是i=1000,i<=9990

还有数组定义小了

可以把第一个循环条件改成i=0,i<n

我要回答