Pagini recente » Cod sursa (job #1135603) | Cod sursa (job #1555117) | Statistici Solomon (Solomon_Stefan22) | Cod sursa (job #2625866) | Cod sursa (job #2566917)
#include <fstream>
#include <string>
#include <vector>
#include <iostream>
#include <set>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
const vector<string> transf[2] = {{"2B","1131C","1132C","1133C","1231C","1232C","1233C","1331C","1332C","1333C"},{"2","3BC","121","122","123"}};
int n, l;
bool posibil(string s, string cmp) {
if(s.length() > cmp.length()) return false;
if(s == cmp) return true;
for(int i = 0; i < s.length(); i++)
if(s[i] == 'B' || s[i] == 'C')
for(auto x:transf[s[i]-'B']) {
if(posibil(s.substr(0, i)+ x + s.substr(i+1, s.length()-i), cmp))
return true;
}
return false;
}
int main() {
fin >> n;
while(n--) {
fin >> l;
if(l == 1) {
fout << true << '\n';
continue;
}
string s;
char q;
while(l--) {
fin >> q;
s += q;
}
bool res = posibil("B", s) | posibil("C", s);
fout << res << '\n';
}
}