#include <bits/stdc++.h>
using namespace std;
const char ch[] = {'L', 'O'};
int n;
map<string, int> vis;
int judge(string str){
if (vis.count(str)) return vis[str];
if (str.size() < 3){
vis[str] = 0;
return 0;
}
if (str.find("LO*") != -1 && str.find("L*L") != -1 && str.find("*OL") != -1){
vis[str] = 1;
return 1;
}
if (str.find('*') == -1 && str.find("LOL") == -1){
vis[str] = 0;
return 0;
}
cout << str << '\n';
bool pj = false; // 判断是否可以平局
int tmp;
for (int i=0; i<str.size(); i++){
if (str[i] == '*'){
for (int j=0; j<2; j++){
str[i] = ch[j];
if (str.find("LO*") != -1 && str.find("L*L") != -1 && str.find("*OL") != -1){
str[i] = '*';
continue;
}
tmp = judge(str);
str[i] = '*';
if (tmp == -1){
vis[str] = 1;
return 1;
}
if (tmp == 1) continue;
else if (!tmp) pj = true;
}
}
}
if (tmp){
vis[str] = 0;
return 0;
}
vis[str] = -1;
return -1;
}
string str;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
while (n--){
cin >> str;
cout << judge(str) << '\n';
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const char ch[] = {'L', 'O'};
int n;
map<string, int> vis;
int judge(string str){
if (vis.count(str)) return vis[str];
if (str.size() < 3){
vis[str] = 0;
return 0;
}
if (str.find("LO*") != -1 && str.find("L*L") != -1 && str.find("*OL") != -1){
vis[str] = 1;
return 1;
}
if (str.find('*') == -1 && str.find("LOL") == -1){
vis[str] = 0;
return 0;
}
// cout << str << '\n';
bool pj = false; // 判断是否可以平局
int tmp;
for (int i=0; i<str.size(); i++){
if (str[i] == '*'){
for (int j=0; j<2; j++){
str[i] = ch[j];
if (str.find("LO*") != -1 && str.find("L*L") != -1 && str.find("*OL") != -1){
str[i] = '*';
continue;
}
tmp = judge(str);
str[i] = '*';
if (tmp == -1){
vis[str] = 1;
return 1;
}
if (tmp == 1) continue;
else if (!tmp) pj = true;
}
}
}
if (tmp){
vis[str] = 0;
return 0;
}
vis[str] = -1;
return -1;
}
string str;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
while (n--){
cin >> str;
cout << judge(str) << '\n';
}
return 0;
}
下面两份代码唯一的区别就是第 23 行是否被注释。
但是它们最后所得到的答案却完全不同(一个是 0,一个是 1)
是什么问题呢?