当前位置:首页 > 题解目录 > 正文内容

【题解】直方图

亿万年的星光5年前 (2021-05-01)题解目录5066

直方图(histogram.cpp)

【题目描述】

给定一个非负整数数组,统计里面每一个数的出现次数。我们只统计到数组里面最大的数。

假设Fmax(Fmax<10000)是数组里最大的数,那么我们只统计{0,1,2...Fmax}里每个数出现的次数。

【输入描述】

第一行n个数组的大小,1<=n<=10000

紧接着一行是数组的n个元素。

【输出描述】

按顺序输出每个数的出现次数,一行一个数。如果没有出现,则输出0。对于例子中的数组,最大的数是3,因此我们只统计{0,1,2,3}的出现频数。

【样例输入】

5
1 1 2 3 1


【样例输出】

0
3
1
1


【题目分析】

  • 非常经典的桶排使用方法,a[x]++操作就能完成排序工作

  • 统计只到max每个数出现的次数,只需要我们在计算过程中把最大数统计出来即可。



【参考代码1】

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin>>n;
    int a[10001];//定义数组
    int  Fmax=-1;//定义最大的数
    for(int i=0; i<n; i++)
    {
        cin>>a[i];
        if(Fmax<=a[i])
            Fmax=a[i];//找出最大的数
    }
    int b[10001];//声明计数数组
    memset(b,0, sizeof(b));//初始化数组
    for(int i=0; i<n; i++)
    {
        b[a[i]]++;//统计出现的次数
    }
    for(int i=0; i<=Fmax; i++)
    {
        cout<<b[i]<<endl;
    }

    return 0;
}


【参考代码2】

#include<iostream>
using namespace std; 
int main() 
{
    int n,x;
    int a[10001]={0};
    int max=-9999,flag;
    int i;
    
    /*桶排的思想*/
    
    cin>>n;//输入数组大小n
    for(i=1;i<=n;i++)
    {
        cin>>x;//输入元素
    	a[x]++;
        if(x>max)
            max=x;//记录最大值
    }
    for(i=0;i<=max;i++)//输出到max为止的频数
    	cout<<a[i]<<endl;
    
    return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    标签: 模拟桶排
    分享给朋友:

    相关文章

    【题解】相关数

    【题目描述】一个数与另一个数如果含有相同数字和个数的字符,则称两数相关。现有一堆乱七八糟的整数,里面可能充满了彼此相关的数,请你用一下手段,自动地将其剔除。【输入描述】每组数据前有一个N(<10...

    【题解】网线主管

    【题目描述】仙境的居民们决定举办一场程序设计区域赛。裁判委员会完全由自愿组成,他们承诺要组织一次史上最公正的比赛。他们决定将选手的电脑用星形拓扑结构连接在一起,即将它们全部连到一个单一的中心服务器。为...

    【题解】跳格子2

    【题目描述】地面上有一排长度为n的格子1-n,每个格子上都有一个数xi,开始时你在位置0,每次你可以向前跳1-2格,然后取走格子上的数,直到跳到位置n+1。取走的数的和就是你的得分,现在你想知道你可能...

    【算法】滑动窗口2—窗口大小可变

    【算法】滑动窗口2—窗口大小可变

    对于滑动窗口第二类:窗口大小可变类型 图解如下,类似双指针算法。【解题思想】1、字符串 S 中使用双指针的左右指针技巧,初始化 left = right = 0,把索引的...

    【题解】合根植物

    【题解】合根植物

    【题目描述】w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成...

    【题解】连通块

    【题目描述】一个n × m的方格图,一些格子被涂成了黑色,在方格图中被标为1,白色格子标为0。问有多少个四连通的黑色格子连通块。四连通的黑色格子连通块指的是一片由黑色格子组成的区域,其中的每个黑色格子...