题目链接:于是他错误的点名开始了 - 洛谷
代码:
#include <bits/stdc++.h>
using namespace std;
struct node{
bool en, used;
node* ch[26];
node(){en=0; used=0; fill(ch,ch+26,nullptr);}
} *T;
void insert(const string&s){
node* t = T;
for(char c:s){
if(t->ch[c-'a']==nullptr) t->ch[c-'a']=new node();
t=t->ch[c-'a'];
}
t->en=1;
}
void find(const string&s){
node* t = T;
for(char c:s){
if(t->ch[c-'a']==nullptr) {cout<<"WRONG"<<'\n'; return;} //找不到,结束
else t = t->ch[c-'a'];
}
if(t->en==0) {cout<<"WRONG"<<'\n'; return;}
if(t->used==0) {cout<<"OK"<<'\n'; t->used=1;}
else cout<<"REPEAT"<<'\n';
}
int n, m; string s;
int main(){
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
T=new node(); //这步一定不能漏掉!!
cin>>n;
for(int i=1; i<=n; i++) {cin>>s; insert(s);}
cin>>m;
for(int i=1; i<=m; i++) {cin>>s; find(s);}
}