如果我的思路有误,求正解
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int m[1000010];
int n;
int c;
bool p(int s[]) {
int a = 0, b = 0, c = 0, d = 0;
for (int i = 1; i < n; i++) {
if (s[i] == 0 && s[i+1] == 1) a++;
if (s[i] == 0 && s[i+1] == 0) b++;
if (s[i] == 1 && s[i+1] == 0) c++;
if (s[i] == 1 && s[i+1] == 1) d++;
}
if (a == b && b == c && c == d) return 1;
return 0;
}
void dfs(int x, int a) {
if (x > n) {
if (p(m)) {
for (int i = 1; i <= n; i++)
printf("%d", m[i]);
exit(0);
}
return;
}
if (c > 10000) {
cout << -1;
exit(0);
}
m[x] = a;
c++;
dfs(x + 1, 0);
dfs(x + 1, 1);
}
int main() {
cin >> n;
dfs(1, 0);
dfs(1, 1);
cout << -1;
return 0;
}