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