请求大佬帮助,目前RE内存非法访问,40分
#include<bits/stdc++.h>
using namespace std;
int n,q;
bool vowel(char x)
{
return x=='a'||x=='e'||x=='i'||x=='o'||x=='u';
}
void grd(string& x,vector<string>& xv)
{
int start=0;
for(int i=0;i<x.length();i++)
{
if(i==x.length()-1)
{
xv.push_back(x.substr(start,i-start+1));
}
else if(vowel(x[i]))
{
xv.push_back(x.substr(start,i-start+1));
start=i+1;
}
else if(x[i]=='n')
{
if(!vowel(x[i+1]))
{
xv.push_back(x.substr(start,i-start+1));
start=i+1;
}
}
else if(x[i+1]=='n'&&(i==x.length()-2||!vowel(x[i+2])))
{
xv.push_back(x.substr(start,i-start+1));
start=i+1;
}
}
}
int main()
{
string c[100000],s;
vector<string> cv[10],sv;
cin>>n>>q;
for(int i=0;i<n;i++)
{
cin>>c[i];
grd(c[i],cv[i]);
}
for(int i=0;i<q;i++)
{
int ans=0;
cin>>s;
sv.clear();
grd(s,sv);
for(int j=0;j<n;j++)
{
bool fa=false;
for(int k=0;k<=sv.size()-cv[j].size();k++)
{
bool fb=true;
for(int l=0;l<cv[j].size();l++)
{
if(sv[k+l]!=cv[j][l])
{
fb=false;
break;
}
}
if(fb)fa=true;
}
if(fa)ans++;
}
if(ans==1)
{
cout<<"Yes, Commander\n";
}
else
{
cout<<"No, Commander\n";
}
}
for(int i=0;i<n;i++)
{
cv[i].clear();
}
sv.clear();
return 0;
}