题目大意
Leona 和 Zoe 玩游戏,轮流说单词,说的单词必须比上一个单词字典序大,且以相同字母或下一个字母开头。Leona 先开始,直到有一方没有符合要求的单词为止。
给出他们有的单词,求最终谁会获胜。
题目解法
一道比较简单的模拟题,按照题意模拟。
因为题目描述里说明是按照字典序输入的,所以我们就按照这个顺序进行循环,寻找符合条件的单词,没有符合条件的单词直接跳出。
参考代码
#include<bits/stdc++.h>
using namespace std;
string a[100010],b[100010],na,nb;
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=m;i++) cin>>b[i];
int ab=2,bb=1,jg=-1,f1=0,f2=0;
na=a[1];
while(1){
f1=0;
for(int i=bb;i<=m;i++){//寻找Zoe符合条件的单词
bool f=b[i]>na;
if((na[0]==b[i][0]&&f==1)||b[i][0]==na[0]+1){
nb=b[i];
f1=1;
bb=i+1;
break;
}
}
if(f1==0){
jg=1;
break;
}
f2=0;
for(int i=ab;i<=n;i++){//寻找Leona符合条件的单词
bool f=a[i]>nb;
if((nb[0]==a[i][0]&&f==1)||a[i][0]==nb[0]+1){
na=a[i];
f2=1;
ab=i+1;
break;
}
}
if(f2==0){
jg=0;
break;
}
}
if(jg==0) cout<<"Zoe";
else cout<<"Leona";
}