用c语言写全排列问题代码
时间: 2023-10-16 13:10:05 浏览: 108
以下是使用递归实现全排列问题的C语言代码:
```
#include <stdio.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void permute(char *str, int left, int right) {
if (left == right) {
printf("%s\n", str);
} else {
for (int i = left; i <= right; i++) {
swap(str + left, str + i);
permute(str, left + 1, right);
swap(str + left, str + i);
}
}
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
printf("All permutations of the string are:\n");
permute(str, 0, strlen(str) - 1);
return 0;
}
```
该代码使用了递归方法,首先传入一个字符串和左右两个指针,当左指针和右指针相等时,表示已经找到了一个排列,打印出来。否则,从左指针开始,将每个字符与左指针交换,然后递归调用permute函数,直到左指针等于右指针。最后再将字符交换回来,以便进行下一次交换。
阅读全文