c语言

c语言怎么实现全排列

小亿
84
2024-09-05 08:32:59
栏目: 编程语言

在C语言中,可以使用递归的方法来实现全排列。以下是一个简单的示例:

#include<stdio.h>

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

void permute(int arr[], int start, int end) {
    if (start == end) {
        for (int i = 0; i <= end; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
    } else {
        for (int i = start; i <= end; i++) {
            swap((arr + start), (arr + i));
            permute(arr, start + 1, end);
            swap((arr + start), (arr + i)); // backtrack
        }
    }
}

int main() {
    int arr[] = {1, 2, 3};
    int n = sizeof(arr) / sizeof(arr[0]);
    permute(arr, 0, n - 1);
    return 0;
}

这个程序首先定义了一个swap函数,用于交换两个整数。然后定义了一个permute函数,它接受一个整数数组、开始索引和结束索引作为参数。如果开始索引等于结束索引,则打印出当前排列。否则,遍历从开始索引到结束索引的所有元素,并递归地调用permute函数。在每次递归调用之后,需要将数组恢复到原始状态,以便进行下一次迭代。

main函数中,我们创建了一个包含三个整数的数组,并调用permute函数生成全排列。

0
看了该问题的人还看了