用c++ 写全排列算法
时间: 2024-05-10 21:14:13 浏览: 106
以下是使用 C 语言编写的全排列算法:
```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) {
int i;
if(left == right) {
printf("%s\n", str);
} else {
for(i = left; i <= right; i++) {
swap((str + left), (str + i));
permute(str, left + 1, right);
swap((str + left), (str + i)); //backtrack
}
}
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
printf("Permutations:\n");
permute(str, 0, strlen(str) - 1);
return 0;
}
```
这个程序使用递归方法和回溯技术计算一个给定字符串的所有排列。在主函数中,用户输入一个字符串,然后程序调用 permute 函数来计算该字符串的所有排列。permute 函数使用递归来计算所有可能的排列。在每个递归调用中,它将字符串中的一个字符与当前位置交换,然后递归调用 permute 函数以计算剩余字符的排列。一旦递归调用返回,permute 函数会撤销该字符与当前位置的交换,以便计算下一个可能的排列。最后,当 left 和 right 相等时,该函数输出一个排列。
阅读全文