09:直方图
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
给定一个非负整数数组,统计里面每一个数的出现次数。我们只统计到数组里最大的数。
假设 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
状态
- 接下来是答案
(题目简单易懂,答案清晰明了,分析就免了[不就是懒嘛])*~\(-W-)/~*//1909 直方图(又直又方) #include<cstdio> int a[10005],sgs[10005]/*存储每个数的tot*/,math[10005]/*存储每个需要查找的数*/; int main() { int n,big=0,j=1; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); if(a[i]>big) big=a[i]; } for(int i=big;i>=0;i--) { math[j]=i; j++; } for(int i=1;i<=n;i++) { for(j=1;j<=big+1;j++) { if(a[i]==math[j]) { sgs[j]++; break; } } } for(int i=big+1;i>=1;i--) printf("%d\n",sgs[i]); }