遞迴_排列所有組合
user_3763047219
c_cpp
3 years ago
794 B
6
Indexable
#include <stdio.h> void permute(int* a, int l, int r, int n); #include <stdio.h> #include <stdlib.h> void swap(int* x, int* y) { int temp; temp = *x; *x = *y; *y = temp; } void permute(int* a, int l, int r, int n) { if (l == r) { for (int i = 0; i < n; i++) { printf("%d ", a[i]); } printf("\n"); } else { for (int i = l; i < n; i++) { swap(&a[i], &a[l]); permute(a, l + 1, r, n); swap(&a[i], &a[l]); } } } int main() { int n, i; scanf("%d", &n); int* a = (int*)malloc(n * sizeof(int)); for (i = 0; i < n; i++) { scanf("%d", &a[i]); } permute(a, 0, n - 1, n); free(a); return 0; }
Editor is loading...