(C/C++) Array 印出所有排列組合
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 5 #define N 4 6 int arr[N] = { 1, 2, 3, 4}; 7 8 9 void swap(int *a, int *b) 10 { 11 int temp = *a; 12 *a = *b; 13 *b = temp; 14 } 15 16 void prem(int *arr, int i, int n) 17 { 18 int j; 19 if(i == n) 20 { 21 for(j = 0; j < N; j++) 22 printf("%d ", arr[j]); 23 printf("\n"); 24 } 25 else 26 { 27 for(j = i; j <= n; j++) 28 { 29 swap(&arr[i], &arr[j]); 30 prem(arr, i + 1, n); 31 swap(&arr[i], &arr[j]); 32 } 33 } 34 35 } 36 37 int main(void) 38 { 39 int i = 0; 40 prem(arr, 0, N - 1); 41 printf("---------------------\n"); 42 for(i = 0; i < N ;i++) 43 printf("%d ", arr[i]); 44 printf("\n"); 45 46 return 0; 47 }