求hack,红中透黑,40分
查看原帖
求hack,红中透黑,40分
1284815
canwen楼主2024/8/23 22:08

感觉思路没问题。

当末尾是 l,b,q 时,肯定可以,毕竟你可以在开头补上去,如果不是,那就从开头开始匹配,如果匹配到了且两个字符的位置互异,就可行,否则返回 00。特别的处理长度为 11 的情况。

#include<bits/stdc++.h>
using namespace std;

bool check(string x){
	while(!x.empty()){
		int now=x.size()-1;
			int pd=1;
			if(x.size()==1) 
			{x.erase(x.begin()+now);continue;}
			for(int i=0;i<now;i++){
				if(x[i]==x[now]){
					pd=0;
					x.erase(x.begin()+now);
					x.erase(x.begin()+i);
					break;
				}
			}
			if(pd){
				if(x[now]=='l'||x[now]=='q'||x[now]=='b') x.erase(x.begin()+now);
				else return 0;
			}
//		cout<<x<<endl;
	}
	return 1;
}
int main(){
	int t;
	cin>>t;
	while(t--){
		string s;
		cin>>s;
		if(check(s)) cout<<"Yes\n";
		else cout<<"No\n";
	}
	
	return 0;
} 
2024/8/23 22:08
加载中...