1. 程式人生 > >門禁系統 (201412-1)

門禁系統 (201412-1)

問題描述   濤濤最近要負責圖書館的管理工作,需要記錄下每天讀者的到訪情況。每位讀者有一個編號,每條記錄用讀者的編號來表示。給出讀者的來訪記錄,請問每一條記錄中的讀者是第幾次出現。 輸入格式   輸入的第一行包含一個整數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;
}