C语言实现递归回溯法求解排列问题
#include <stdio.h> #include <stdbool.h>
void permutation(int n, int m, int a[], bool used[], int cur) { if (cur == m) { printf("("); for (int i = 0; i < m; i++) { printf("%d", a[i]); if (i != m - 1) printf(","); } printf(")"); return; } for (int i = 1; i <= n; i++) { if (!used[i]) { a[cur] = i; used[i] = true; permutation(n, m, a, used, cur + 1); used[i] = false; } } }
int main() { int n = 3, m = 2; int a[m]; bool used[n + 1]; for (int i = 1; i <= n; i++) used[i] = false; permutation(n, m, a, used, 0); return 0; }
原文地址: https://www.cveoy.top/t/topic/nhz2 著作权归作者所有。请勿转载和采集!