Description
Input
Output
Sample Input
8 2 4 2 4 5 100 2 100
Sample Output
2 3 4 2 5 1 100 2
我一开始看到还以为要用map来做,其实不用map也可以啊。
就是开一个大于10000的数组,然后把数字存进去,并且用sort排序一遍(因为它是要从小到大排序)。
要判断该数出现的次数的话,那么就判断它是否和前面那个数相等就好了,如果相等,计数器加1;如果不相等,那么计数器清零,然后再进行自增。
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; __int64 a[10002]; int main(){ int n,i,j,k,ans; while(scanf("%d",&n)!=EOF){ ans=1; memset(a,0,sizeof(a)); for(i=1;i<=n;i++) scanf("%I64d",&a[i]); sort(a+1,a+n+1); for(i=2;i<=n;i++){ if(a[i]==a[i-1]) ans++; else if(a[i]!=a[i-1]) {printf("%I64d %d\n",a[i-1],ans); ans=1;} } printf("%I64d %d\n",a[i-1],ans); } }
原文地址:http://blog.csdn.net/acmer_hades/article/details/43899047