用的是递归
不清楚哪里有问题
#include <iostream>
#include <string>
using namespace std;
int N;
void reverse (string &s, int indax) {
int is = 1;
for (int i = 0; i < N; i++) {
if (s[i] != '1') {
is = 0;
break;
}
}
if (is == 1) {
return;
}
for (int i = 0; i < indax; i++) {
s[i] == '0' ? s[i] = '1' : s[i] = '0';
}
for (int i = indax + 1; i < N; i++) {
s[i] == '0' ? s[i] = '1' : s[i] = '0';
}
cout << s.c_str() << endl;
reverse (s, ++indax);
}
int main () {
cin >> N;
cout << N << endl;
string coin;
for (int i = 0; i < N; i++) {
coin[i] = '0';
}
coin[N] = '\0';
reverse (coin, 0);
return 0;
}