Răspuns :
#include <cstring>
#include <iostream>
using namespace std;
char v[100]; // Vectorul solutie
int nr; //Numarul de cifre
bool valid(int x){
//Functie care verifica daca exista cel putin un 1 in ultimele 3 cifre
for(int i=1;i<=x-2;i++){
if(v[i]!='1' && v[i+1]!='1' && v[i+2]!='1') return false;
}
return true;
}
void afisare(){
//Functie pentru afisarea solutiei
for(int i=1; i<=nr; i++){
cout << v[i];
}
cout << endl;
}
void bkt(int n){
//Functie principala backtracking
//Pentru 0
v[n]='0';
//Daca este valid
if(valid(n)){
//Daca avem numarul de pozitii afiseaza
if(n>=nr) afisare();
//Altfel treci la pozitia urmatoare
else bkt(n+1);
}
//Pentru 0
v[n]='1';
//Daca este valid
if(valid(n)){
//Daca avem numarul de pozitii afiseaza
if(n>=nr) afisare();
//Altfel treci la pozitia urmatoare
else bkt(n+1);
}
}
int main(){
//Citim numarul de cifre
cin >> nr;
//Apelam funtia responsabila de backtracking
bkt(1);
}