門禁系統 (201412-1)
阿新 • • 發佈:2019-01-08
問題描述
濤濤最近要負責圖書館的管理工作,需要記錄下每天讀者的到訪情況。每位讀者有一個編號,每條記錄用讀者的編號來表示。給出讀者的來訪記錄,請問每一條記錄中的讀者是第幾次出現。
輸入格式
輸入的第一行包含一個整數n,表示濤濤的記錄條數。
第二行包含n個整數,依次表示濤濤的記錄中每位讀者的編號。 輸出格式 輸出一行,包含n個整數,由空格分隔,依次表示每條記錄中的讀者編號是第幾次出現。 樣例輸入 5
1 2 1 1 3 樣例輸出 1 1 2 3 1 評測用例規模與約定 1≤n≤1,000,讀者的編號為不超過n的正整數。
第二行包含n個整數,依次表示濤濤的記錄中每位讀者的編號。 輸出格式 輸出一行,包含n個整數,由空格分隔,依次表示每條記錄中的讀者編號是第幾次出現。 樣例輸入 5
1 2 1 1 3 樣例輸出 1 1 2 3 1 評測用例規模與約定 1≤n≤1,000,讀者的編號為不超過n的正整數。
思路: 看了這道題,立馬有兩個思路。 第一個是用 map型別,記錄每個數字 出現的次數。 第二個是用 struct型別,定義兩個值,一個代表該數,另一個代表該數出現的次數。
#include <iostream> #include <map> #include <vector> using namespace std; map<int,int>m; vector<int>vec; int main(){ int n; cin>>n; int i,a; for(i=0;i<n;i++){ cin>>a; m[a]++; vec.push_back(m[a]); } vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++){ cout<<*it<<" "; } return 0; }
#include <iostream> #include <vector> using namespace std; struct per{ int a; int count; }; vector<int>vec; int main(){ int n,i; cin>>n; per p[1010]; int temp; for(i=0;i<1010;i++){ p[i].a = i; p[i].count = 0; } for(i=1;i<=n;i++){ cin>>temp; ++p[temp].count; vec.push_back(p[temp].count); } vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++) cout<<*it<<" "; return 0; }