门禁系统
问题描述
涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。
输入格式
输入的第一行包含一个整数n,表示涛涛的记录条数。
第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。
输出格式
输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出现。
样例输入
5
1 2 1 1 3
样例输出
1 1 2 3 1
评测用例规模与约定
1≤n≤1,000,读者的编号为不超过n的正整数。
问题分析:
求每一条记录中的读者是第几次出现,实际是求这个数到目前为止有几个 。
方法一未使用容器,方法二使用map容器。
方法一:
#include <iostream>
#define N 1001
using namespace std;
//门禁系统
int main(){
int n,a[N],count[N]={0};
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
//计数
count[a[i]]++;
//求每一条记录中的读者是第几次出现
//实际是求这个数到目前为止有几个
cout<<count[a[i]]<<" ";
}
return 0;
}
方法二:
#include <iostream>
#include <map>
//门禁系统
using namespace std;
int main(){
map<int,int> m;
int n,num;
//输入数据,构建Map,输出结果
cin >> n;
for(int i=1;i<=n;i++){
cin>>num;
//构建Map
m[num]++;
cout<<m[num]<<" ";
}
cout<<endl;
return 0;
}