Sửa lỗi Xâu nhị phân k phần tử không có 2 số 0 không liên tiếp nhau

mình dùng phương pháp back track để tìm xâu nhị phân, sau đó có thêm biến đếm để tìm 2 số 0 không liên tiếp, mà sao kết quả ra sai vậy ạ?
vd : k = 3
kết quả nó ra
0 1 0
0 1 1
1 1 0
1 1 1
nhưng vẫn còn thiếu 1 0 1, cho mình hỏi là sai sót chỗ nào vậy ạ ?

#include <iostream>
#include <stdlib.h>
#define Max 100
#define True 1
#define False 0
using namespace std;
int n, X[Max], dem = 0;

void init(void) {
	cout << "\nNhap n = ";
	cin >> n;
}
void Result(void) {
	cout << "\nKet qua buoc " << ++dem << ": ";
	for (int i = 1; i <= n; i++)
		cout << X[i] << " ";
}
void Try(int i) {
	X[0] = 1;
	int dem2 = 0;
	for (int j = 0; j <= 1; j++) {
		X[i] = j;
		if (X[i - 1] == 0 && X[i] == 0)
			dem2++;
		if (i == n) {
			if (dem2 != 1)
				Result();
		}
		else
				Try(i + 1);
	}
}
int main() {
	init();
	Try(1);
	
	system("pause");
	return 0;
}
{
"pre_state": {
   "X": [1, 1, 0, 0]
},
"call_stack": {
   "functions": ["Try"],
   "Try": { "i": 1, "j": 1, "dem2": 0,
      "Try": { "i": 2, "j": 0, "dem2": 0,
          "Try": { "i": 3, "j": 1, "dem2": 1} // <- bug
       }
   }
},
"post_state": {
   "X": [1, 1, 0, 1]
}
}
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?