我是靠谱客的博主 温婉花生,最近开发中收集的这篇文章主要介绍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:双指针暴力模拟所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部