输入一个字符串,打印这个字符串中字符的全排列。完整代码
时间: 2024-05-01 19:22:01 浏览: 73
以下是使用递归实现字符串全排列的完整代码:
```
#include <iostream>
#include <string>
using namespace std;
// 递归函数,用来计算字符串的全排列
void Permutation(string str, int begin) {
// 如果已经处理到字符串的最后一个字符,输出结果
if (begin == str.size() - 1) {
cout << str << endl;
return;
}
// 对每个字符进行处理
for (int i = begin; i < str.size(); ++i) {
// 如果当前字符与起始字符相同,则无需重复处理
if (i != begin && str[i] == str[begin]) {
continue;
}
// 交换起始字符和当前字符
swap(str[i], str[begin]);
// 递归处理后面的字符
Permutation(str, begin + 1);
// 恢复起始字符和当前字符的位置
swap(str[i], str[begin]);
}
}
int main() {
string str;
cout << "请输入一个字符串:" << endl;
cin >> str;
Permutation(str, 0);
return 0;
}
```
该代码中,使用了递归函数 `Permutation` 来计算字符串的全排列。首先判断是否已经处理到字符串的最后一个字符,如果是,则输出结果。否则,对于每个字符,交换起始字符和当前字符的位置,并递归处理后面的字符;然后再恢复起始字符和当前字符的位置,继续处理下一个字符。这样,就可以得到字符串的全排列。
阅读全文