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
1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #include<cstring> 5 using namespace std; 6 int Max(int[],int); 7 int main() 8 { 9 int n; 10 scanf("%d",&n); 11 int a[n]; 12 for(int i=0;i<n;i++) 13 scanf("%d",&a[i]); 14 int x=Max(a,n); 15 int b[x+1]; 16 memset(b,0,sizeof(b)); 17 for(int i=0;i<n;i++) 18 { 19 if(a[i]<=x)b[a[i]]++; 20 } 21 for(int i=0;i<=x;i++) 22 printf("%d\n",b[i]); 23 return 0; 24 } 25 int Max(int a[],int n) 26 { 27 int s=a[0]; 28 for(int i=0;i<n;i++) 29 if(s<a[i])s=a[i]; 30 return s; 31 }
时间: 2024-12-15 08:34:35