题目:
https://ac.nowcoder.com/acm/contest/57307/I
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int T;
string s;
bool f;
void dfs(string s)
{
if (f) return;
int sum = 0;
for (int i = 1;i <= 8;i ++) if (s[i] == '1') sum ++;
if (sum == 7)
{
f = true;
return;
}
for (int i = 1;i <= 8;i ++)
{
if (s[i] == '0')
{
if (s[(i + 2) % 8 + 1] == '0')
{
s[(i + 2) % 8 + 1] = '1';
dfs(s);
s[(i + 2) % 8 + 1] = '0';
}
if (s[(i + 4) % 8 + 1] == '0')
{
s[(i + 4) % 8 + 1] = '1';
dfs(s);
s[(i + 4) % 8 + 1] = '0';
}
}
}
}
int main()
{
cin >> T;
while (T --)
{
f = false;
cin >> s;
s = " " + s;
dfs(s);
if (f) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}