Pagini recente » Cod sursa (job #3179112) | Cod sursa (job #2384612) | Cod sursa (job #1851239) | Cod sursa (job #2155814) | Cod sursa (job #1899887)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("perle.in");
ofstream out("perle.out");
bool x;
string d;
void gen(string s, int z){
if(s==d){x=true; return;}
if(z>=d.size())return;
if('1'<=s[z]&&s[z]<='3'){
if(d[z]!=s[z])return;
gen(s, z+1);
}else if(s[z]=='A'){
s[z]=d[z];
gen(s, z+1);
}else if(s[z]=='B'){
if(d[z]=='1'){
if(z<=d.size()-5){
if(d[z+2]=='3'){
s.erase(z, 1);
s.insert(z, "1A3AC");
gen(s, z+1);
}
}
}else if(d[z]=='2'){
if(z<=d.size()-2){
s.erase(z, 1);
s.insert(z, "2B");
gen(s, z+1);
}
}
}else{
if(d[z]=='1'){
if(z<=d.size()-3){
if(d[z+1]=='2'){
s.erase(z, 1);
s.insert(z, "12A");
gen(s, z+1);
}
}
}else if(d[z]=='2'){
s[z]='2';
gen(s, z+1);
}else{
if(z<=d.size()-3){
if(d[z]=='3'){
s.erase(z, 1);
s.insert(z, "3BC");
gen(s, z+1);
}
}
}
}
}
int main(){
int n, m;
char c;
in>>n;
string a, b;
for(int i=1; i<=n; i++){
a.clear();
in>>m;
for(int j=1; j<=m; j++)in>>c, a+=c;
if(a.size()==1){out<<1<<"\n"; continue;}
if(a[0]=='1'){
if(a[1]=='2')b="12A",b[2]=a[2];
else b="1A3AC", b[1]=a[1], b[3]=a[3];
}else if(a[0]=='2'){
b="2B";
}else{
b="3BC";
}
x=false;
d=a;
gen(b, 0);
out<<x<<"\n";
}
return 0;
}