c语言洛谷p1706+全排列问题
时间: 2024-01-19 19:18:02 浏览: 76
使用C语言解决字符串全排列问题
5星 · 资源好评率100%
以下是C语言解决洛谷P1706全排列问题的代码示例:
```c
#include <stdio.h>
void swap(char *x, char *y) {
char temp;
temp = *x;
*x = *y;
*y = temp;
}
void permute(char *str, int l, int r) {
int i;
if (l == r) {
printf("%s\n", str);
} else {
for (i = l; i <= r; i++) {
swap((str + l), (str + i));
permute(str, l + 1, r);
swap((str + l), (str + i)); // backtrack
}
}
}
int main() {
char str[] = "ABC";
int n = strlen(str);
permute(str, 0, n - 1);
return 0;
}
```
这段代码使用了递归的方式来生成字符串的全排列。在`permute`函数中,我们首先检查是否达到了字符串的末尾,如果是,则打印当前的排列。否则,我们将当前字符与后面的字符依次交换,并递归调用`permute`函数来生成剩余字符的排列。最后,我们再次交换回来,以便进行下一次排列。
阅读全文