标签:数组,哈希,排序
试题链接:https://www.nowcoder.com/questionTerminal/0177394fb25b42b48657bc2b1c6f9fcc
我的解决方案:
#include<stdio.h>
#include<iostream>
using namespace std;
const int maxn=10000;
int main(){
int readers[maxn]={0};
int readerHasTable[201]={0};
int num;
int p;
cin>>num>>p;
for(int i=0;i<num;i++){
int book;
cin>>book;
readerHasTable[book]+=1;
readers[i]=book;
}
for(int i=0;i<num;i++){
if(readerHasTable[readers[i]]>1)
cout<<readerHasTable[readers[i]]-1<<endl;
else cout<<"BeiJu"<<endl;
}
return 0;
}
跟我思路一样但更简洁一点的代码:
#include<stdio.h>
int main()
{
int i,d;
int N,M;
while(scanf("%d %d",&N,&M)!=EOF)
{
int reader[201]={0},book[201]={0};
for(i=1;i<=N;i++)
{
scanf("%d",&d);
reader[i]=d;
book[d]++;
}
for(i=1;i<=N;i++)
{
if(book[reader[i]]==1)
printf("BeiJu\n");
else printf("%d\n",book[reader[i]]-1);
}
}
return 0;
}