-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtp_lab12_ex2.c
51 lines (39 loc) · 902 Bytes
/
tp_lab12_ex2.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <stdlib.h>
void perm_print(int data[], int n){
for (int i = 0; i < n; i++)
printf("%d", data[i]);
printf("\n");
}
int is_valid (int data[], int n){
for (int i = 0; i < n - 1; i++){
if (data[i] == 1 && data[i + 1] == 1)
return 0;
}
return 1;
}
void perm_back (int data[], int start, int n){
if (start == n)
return;
for (int i = start; i < n; i++){
if (data [i] == 1)
data[i] = 0;
perm_back(data, i + 1, n);
if (is_valid(data, n))
perm_print(data, n);
data[i] = 1;
}
}
void back (int n){
int data[n];
for (int i = 0; i < n; i++)
data[i] = 1;
perm_back(data, 0, n);
}
int main (int argc, char** argv){
if (argc != 2)
return -1;
int n = atoi(argv[1]);
back(n);
return 0;
}