# Loop1 0 0 (abc) # Loop2 1 1 (abc) # Loop3 2 2 (abc) 1 2 (acb) 2 2 (acb) 0 1 (bac) 1 1 (bac) 2 2 (bac) 1 2 (bca) 2 2 (bca) 0 2 (cba) 1 1 (cba) 2 2 (cba) 1 2 (cab) 2 2 (cab)
#include <stdio.h> #include <math.h> int perm(char *list, int i, int n); int main(int argc, char *argv[]) { int i, n; char list[] = {'a', 'b', 'c'}; i = 0; n = (sizeof(list) / sizeof(list[0])) - 1; perm(list, i, n); printf("\n"); return 0; }
#define SWAP(x, y, t) ((t) = (x), (x) = (y), (y) = (t)) int perm(char *list, int i, int n) { int j, temp; if (i == n) { for (j = 0; j <= n; j++) printf("%c", list[j]); printf(" "); } else { for (j = i; j <= n; j++) { SWAP(list[i], list[j], temp); perm(list, i + 1, n); SWAP(list[i], list[j], temp); } } }
沒有留言:
張貼留言