c++用递归输出全排列的代码
时间: 2024-05-07 09:16:19 浏览: 86
C语言全排列的递归算法
4星 · 用户满意度95%
以下是使用递归输出全排列的代码示例:
```
#include <iostream>
using namespace std;
void permutation(string str, int start, int end) {
if (start == end) {
cout << str << endl; // 输出一种排列
return;
}
for (int i = start; i <= end; i++) {
swap(str[start], str[i]); // 交换两个字符
permutation(str, start + 1, end); // 递归排列剩下的字符
swap(str[start], str[i]); // 恢复交换的字符
}
}
int main() {
string str = "abc";
permutation(str, 0, str.length() - 1);
return 0;
}
```
在上述代码中,`permutation()` 函数使用了递归的方式来输出全排列。首先判断起始位置 `start` 是否到达末尾位置 `end`,如果是,则输出当前的排列。接着循环遍历所有可能的字符,并将其与起始位置的字符交换,然后递归排列剩余的字符,最后恢复交换的字符。通过这种方式,可以得到所有可能的排列。在 `main()` 函数中,我们调用 `permutation()` 函数并传入字符串和起始位置和结束位置的值来输出全排列。
阅读全文