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;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?