Download presentation
Presentation is loading. Please wait.
1
Enumerating all Permutations
#include <stdio.h> char a[] = "abc"; void swap(int i, int j) { int t; t = a[i]; a[i] = a[j]; a[j] = t; } void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); int main(void) { enumerate(3); return 0; Enumerating all Permutations
2
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = ? Stack b c a 1 2 array a value index
3
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 0 Stack b c a 1 2 array a value index
4
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 0 Stack array a index 1 2 value c b a swap
5
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = ? void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 Stack array a index 1 2 value c b a
6
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 Stack array a index 1 2 value c b a
7
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 Stack array a index 1 2 value b c a swap
8
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 1 i = ? environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(1) Stack array a index 1 2 value b c a
9
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 1 i = ? environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(1) Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value b c a
10
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value b c a
11
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value c b a swap
12
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value c b a
13
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value c b a self-swap
14
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 1 i = ? environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(1) Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value c b a
15
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value c b a self-swap
16
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 2 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 0 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value c b a
17
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 0 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value c b a
18
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 0 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c swap
19
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c
20
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a c b swap
21
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a c b swap
22
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value c a b swap
23
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 1 i = ? environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(1) Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value c a b
24
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value c a b
25
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a c b swap
26
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a c b
27
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a c b self-swap
28
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 1 i = ? environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(1) Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a c b
29
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a c b
30
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a c b self-swap
31
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 2 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a c b
32
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a c b
33
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a c b
34
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 1 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c swap
35
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c
36
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c self-swap
37
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c
38
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value b a c swap
39
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 1 i = ? environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 2 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(1) Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value b a c
40
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value b a c
41
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 0 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c swap
42
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c
43
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c self-swap
44
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 1 i = ? environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 2 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(1) Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c
45
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c
46
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 1 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c self-swap
47
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 2 i = 2 void enumerate(int n) { int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(2) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c
48
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c
49
Stack void enumerate(int n) { int i; if (1 == n) printf("%s\n", a);
else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) environment n = 3 i = 2 Stack % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c self-swap
50
void enumerate(int n) {
int i; if (1 == n) printf("%s\n", a); else for (i = 0; i < n; i++) { swap(i, n-1); enumerate(n-1); swap(n-1, i); } enumerate(3) % a.out bca cba cab acb bac abc Unix array a index 1 2 value a b c
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.