目录

直方图信息学奥赛一本通-1115

直方图(信息学奥赛一本通-1115)

【题目描述】

给定一个非负整数数组,统计里面每一个数的出现次数。我们只统计到数组里最大的数。假设 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

【题解代码】

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

const int N = 1e4 + 10;
int nums[N];

int main()
{
	int n; cin >> n;
	int max_v = nums[1], cnt = 0;
	for (int i = 1; i <= n; i++)
	{
		cin >> nums[i];
		if (nums[i] > max_v) max_v = nums[i];
	}
	for (int i = 0; i <= max_v; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			if (nums[j] == i) cnt++;
		}
		cout << cnt << endl;
		cnt = 0;
	}

	return 0;
}