题解 P5601 【小D与笔试】

· · 题解

看上去有点看不懂,但细细看题后可以发现这道题目是很水的。

在输入完题面及答案之后,就输入每个题的时候枚举一下题面是否匹配,然后再匹配答案就行了,因为看数据范围n,q,s\leqslant 100就肯定地知道枚举不会爆炸。

好像这是最不需要讲的一道题目(当然A+B除外)

那么,直接上代码自己理解一下吧,有不懂的可以私信我哦。

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <iostream>
using namespace std;

const char dx[5] = {' ', 'A', 'B', 'C', 'D'};
struct pre {
    string ps, ans;
}p[107];
struct pro {
    string p, ans[5];
}s[107];
int n, q;

int main() {
    scanf("%d%d", &n, &q);
    for(int i = 1; i <= n; ++i)
        cin >> p[i].ps >> p[i].ans;
    for(int i = 1; i <= q; ++i) {
        cin >> s[i].p >> s[i].ans[1] >> s[i].ans[2] >> s[i].ans[3] >> s[i].ans[4];
        for(int j = 1; j <= n; ++j)
            if(s[i].p == p[j].ps)
                for(int k = 1; k <= 4; ++k)
                    if(p[j].ans == s[i].ans[k])
                        printf("%c\n", dx[k]);
    }
    return 0;
}

无耻地求个赞qwq。