C语言算法实现多个人名的全排列
时间: 2023-10-31 16:04:35 浏览: 34
以下是C语言实现多个人名的全排列的算法:
```c
#include <stdio.h>
#include <string.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void permute(char *str, int start, int end) {
if (start == end) {
printf("%s\n", str);
return;
}
for (int i = start; i <= end; i++) {
swap((str + start), (str + i));
permute(str, start + 1, end);
swap((str + start), (str + i));
}
}
int main() {
char names[10][10];
int n;
printf("Enter the number of names (max 10): ");
scanf("%d", &n);
printf("Enter the names: \n");
for (int i = 0; i < n; i++) {
scanf("%s", names[i]);
}
char str[100];
int index = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < strlen(names[i]); j++) {
str[index++] = names[i][j];
}
}
permute(str, 0, strlen(str) - 1);
return 0;
}
```
这个算法首先读取输入的人名,然后将所有人名拼接成一个字符串。然后使用递归函数来生成字符串的全排列,直到字符串中的所有字符都被使用过。最后打印出所有的排列。