CodeForces-832B Petya and Exam
来源:互联网 发布:新红楼梦 知乎 编辑:程序博客网 时间:2024/05/21 14:47
根据题意模拟匹配就好
#include <iostream>#include <iomanip>#include <algorithm>#include <cstdio>#include <cstring>#include <queue>#include <string>#include <cmath>#include <vector>#include <utility>#include <set>#include <climits>//#pragma comment(linker, "/STACK:1024000000,1024000000")#define INF 2147483647using namespace std;typedef long long ll;string good,base;int n,i,j,k;int main(){ cin>>good>>base; scanf("%d",&n); for(k=0; k<n; k++) { string s; cin>>s; if(s.size()+1<base.size())//字符串比base小一个字符以上直接continue { printf("NO\n"); continue; } if(s.size()<base.size())//当字符串小于base { bool ok=false; for(i=0,j=0; i<base.size(); i++,j++) { if(base[i]!='?'&&base[i]!='*') { if(base[i]!=s[j]) break; } else if(base[i]=='?') { std::size_t found=good.find(s[j]); if (found==std::string::npos) { break; } } else if(base[i]=='*') { j--; } } //cout<<i<<" "<<j<<endl; if(i>=base.size()&&j>=s.size()) printf("YES\n"); else printf("NO\n"); } else if(s.size()==base.size())//当两字符串长度相等 { for(i=0,j=0; i<base.size()&&j<s.size(); i++,j++) { if(base[i]!='?'&&base[i]!='*') { if(base[i]!=s[j]) break; } else if(base[i]=='?') { std::size_t found=good.find(s[j]); if (found==std::string::npos) { break; } } else { std::size_t found=good.find(s[j]); if (found!=std::string::npos) { break; } } } if(i>=base.size()&&j>=s.size()) printf("YES\n"); else printf("NO\n"); } else//当字符串大于base { int num=s.size()-base.size(); for(i=0,j=0; i<base.size()&&j<s.size(); i++,j++) { if(base[i]!='?'&&base[i]!='*') { if(base[i]!=s[j]) break; } else if(base[i]=='?') { std::size_t found=good.find(s[j]); if (found==std::string::npos) { break; } } else { while(1) { if(j>=s.size()||j-i>num) break; std::size_t found=good.find(s[j]); if (found!=std::string::npos) { break; } j++; } j--; } } //cout<<i<<" "<<j<<endl; if(j>=s.size()&&i>=base.size()) printf("YES\n"); else printf("NO\n"); } } return 0;}
阅读全文
1 0
- CodeForces 832B Petya and Exam
- codeforces 832B (Petya and Exam)
- CodeForces 832 B. Petya and Exam
- CodeForces-832B Petya and Exam
- codeforces 832B ——Petya and Exam
- Codeforces 832-B Petya and Exam (模拟)
- codeforces B. Petya and Exam (模拟)
- B. Petya and Exam
- cf 832B Petya and Exam
- CodeForces 832B Round #425 Div2 B Petya and Exam:双指针暴力模拟
- Codeforces Round #425 (Div. 2)B. Petya and Exam
- Codeforces Round #425 (Div. 2) B. Petya and Exam
- (字符串匹配)Codeforces Round #425 B. Petya and Exam
- Codeforces Round #425 (Div. 2) B. Petya and Exam
- Codeforces Round #425 (Div. 2) B. Petya and Exam
- Codeforces Round #425 (Div. 2) B. Petya and Exam
- Codeforces Round #425 (Div. 2) B. Petya and Exam【模拟】
- B. Petya and Exam【字符串】
- slf4j的包使用说明
- Qt学习笔记之窗体基类说明
- web 离线存储
- 机密文件
- [Android6.0][RK3399] PCIe 转 SATA 调试步骤
- CodeForces-832B Petya and Exam
- ASSERT(0)的作用
- 类与对象
- 算法竞赛入门经典 UVa 514 Rails
- nginx rewrite(301)重定向之后无法正常请求的解决方案
- PX4源码分析7_添加mavlink自定义消息
- 虚析构函数
- css选择器
- FAFU OJ 今年暑假不ac