社区讨论
月赛最后一题40分救助
题目总版参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @ltirlcvs
- 此快照首次捕获于
- 2024/03/08 22:41 2 年前
- 此快照最后确认于
- 2024/03/09 10:06 2 年前
调半天到四十分不知道哪错了求助大佬~
CPP#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;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...