调半天到四十分不知道哪错了求助大佬~
#include<bits/stdc++.h>
using namespace std;
unordered_map<char,bool>mp={{'a',1},{'e',1},{'i',1},{'o',1},{'u',1}};
vector<string>v[20];
int n,q;
void work(int k,string s){//拆音节,特判n的情况
for(int i=0,j=0;i<s.size();i++){
j=i;
while(j<s.size()&&mp[s[j]]!=1&&s[i]!='n')j++;
if(s[j]=='n'&&mp[s[j+1]])j++;
else if(s[j]=='n'&&!s[j+1]){
if(j>i)v[k].push_back(s.substr(i,j-i));
v[k].push_back("n");
j++;
i=j;
continue;
}
v[k].push_back(s.substr(i,j-i+1));
if(j>i)i=j;
}
}
bool check(string s){
int cnt=0;
v[0].clear();
work(0,s);//v[0]记录当前要检查字符串的音节
for(int i=1;i<=n;i++){
int a=0,b=0;
while(a<v[0].size()&&b<v[i].size()){
if(v[0][a]==v[i][b])b++;
else b=0;
a++;
}
if(b==v[i].size())cnt++;
if(cnt>=2)return false;
}
if(cnt==1)return true;
return false;
}
int main(){
cin>>n>>q;
for(int i=1;i<=n;i++){
string ss;cin>>ss;
work(i,ss);
}
while(q--){
string s;cin>>s;
if(check(s))puts("Yes, Commander");
else puts("No, Commander");
}
//for(auto x:v[0])cout<<x<<' ';
return 0;
}