ZeroJudge A541: 字典

題目敘述

每筆測資第一行有一個正整數N,接下來會有N行,每行有一個不含空格的字串,代表已經背過的單字,接下來會有一個正整數Q,接下來有Q行,每行有一個不含空格的字串,要求輸出這個字串是否已經背過/出現過。


範例輸入 #1

4

henry

john

mary

cindy

5

andy

cindy

vicky

leo

leo

範例輸出 #1

no

yes

no

no

yes


解題思路

使用Map判斷每一個字串是否有出現過,需要注意的是,在判斷Q個字串時,有可能會有重複出現相同字串的情況,這種情況下因為已經有出現過一次,就算這個字串沒有出現在N個字串中第二次詢問時也要輸出yes因為已經出現過了。

解題程式碼如下 (僅供參考):

#include <iostream>
#include <map>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int N;
    cin >> N;
    map<string, int>MAP;
    for (int i = 0; i<N; i++)
    {
        string str;
        cin >> str;
        MAP[str]++;
    }
    int Q;
    cin >> Q;
    for (int i = 0; i<Q; i++)
    {
        string str;
        cin >> str;
        if (MAP[str] == 0) cout << "no\n";
        else cout << "yes\n";
        MAP[str]++;
    }
}

留言

這個網誌中的熱門文章

ZeroJudge M933: 邏輯電路

ZeroJudge A148: You Cannot Pass?!

ZeroJudge M932: 蜜蜂觀察