#include<stdio.h>
//全排列:递归法
void Swap(int *a ,int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void Perm(int arr[], int m, int p) {
if (m == p) {
for (int i = 0; i <= p; i++) {
printf("%d", arr[i]);
}
printf("\n");
}
else {
for (int i = m; i <= p; i++) {
Swap(&(arr[m]), &(arr[i])); //让每次都一个数放在前面,作为标记
Perm(arr, m + 1, p); //将除标记外的所有的数,进行全排列
Swap(&(arr[m]), &(arr[i])); //将每次放在前面的数,归位
}
}
}
int main(void) {
int a[] = {4,5,7,3}; //任意一个数组,自己写
int size = sizeof(a) / sizeof(a[0]);
Perm(a, 0, size-1);
return 0;
}
全排列-递归法
最新推荐文章于 2024-11-11 20:40:17 发布