我是靠谱客的博主 温婉花生,最近开发中收集的这篇文章主要介绍CodeForces 832B Round #425 Div2 B Petya and Exam:双指针暴力模拟,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
题意:全字符集为‘a’..'z'。现给出一个名叫good的子集,其补集定义为bad,给出模式串s,其中s可能有多个‘?’(可以被替换成任何一个good字符),至多一个‘*’(可以被替换成任意长度的bad串,可以为空),然后给出q次询问,每次询问一个匹配串t能否和s匹配成功。
题解:双指针模拟一下。。。emmm确实这个思路以前都没有尝试过。。WA了这么多次也算学到了一些新东西。
Code:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
bool f[30]={0};
for(int b=0;b<s.length();b++){
f[(int)s[b]-96]=true;
}
string ss;
cin>>ss;
int n;
scanf("%d",&n);
while(n--){
string s1;
cin>>s1;
for(int b=0,b1=0;b<ss.length();b++,b1++){
if(ss[b]=='?'){
if(!f[s1[b1]-96]){
printf("NOn");
break;
}
}else if(ss[b]=='*'){
int c=0;
while(!f[s1[b1]-96]&&b1<s1.length()&&c<s1.length()-ss.length()+1){
b1++;c++;
}
b1--;
}else if(ss[b]!=s1[b1]){
printf("NOn");
break;
}
if(b==ss.length()-1)
if(b1==s1.length()-1){
printf("YESn");
}
else printf("NOn");
}
}
}
最后
以上就是温婉花生为你收集整理的CodeForces 832B Round #425 Div2 B Petya and Exam:双指针暴力模拟的全部内容,希望文章能够帮你解决CodeForces 832B Round #425 Div2 B Petya and Exam:双指针暴力模拟所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复