c 语言枚举全排列
时间: 2023-07-03 14:13:12 浏览: 403
你可以使用递归函数来实现 C 语言枚举全排列。下面是一个示例代码:
```c
#include <stdio.h>
enum color { red, green, blue };
const char* color_names[] = { "red", "green", "blue" };
void print_permutation(enum color* perm, int n)
{
for (int i = 0; i < n; ++i) {
printf("%s ", color_names[perm[i]]);
}
printf("\n");
}
void permute(enum color* perm, int n, int i)
{
if (i == n) {
print_permutation(perm, n);
} else {
for (int j = i; j < n; ++j) {
enum color tmp = perm[i];
perm[i] = perm[j];
perm[j] = tmp;
permute(perm, n, i+1);
perm[j] = perm[i];
perm[i] = tmp;
}
}
}
int main()
{
enum color perm[] = { red, green, blue };
permute(perm, 3, 0);
return 0;
}
```
在这个例子中,我们使用枚举类型 `enum color` 来表示三种颜色,并使用一个字符串数组 `color_names` 来保存颜色的名称。`print_permutation` 函数用于打印一个排列,`permute` 函数则使用递归来生成所有可能的排列。在 `main` 函数中,我们初始化了一个包含三种颜色的数组,然后调用 `permute` 函数来生成所有可能的排列。
阅读全文