给定字符串,输出该字符串中所有字符的全排列。例如,abc的全排列是:abc, acb, bac, bca, cba, cab。输入字符串,长度小于10,输出全排列。C++
时间: 2024-05-10 15:17:56 浏览: 176
使用C语言解决字符串全排列问题
可以使用递归来实现字符串全排列,具体思路是:
1. 将原字符串的第一个字符与剩余字符依次交换,得到新字符串。
2. 对新字符串的剩余部分递归调用全排列函数,直到剩余部分为空,输出当前字符串即为一个排列。
以下是代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
void permutation(string s, int start, int end) {
if (start == end) {
cout << s << endl;
return;
}
for (int i = start; i <= end; i++) {
swap(s[start], s[i]);
permutation(s, start + 1, end);
swap(s[start], s[i]);
}
}
int main() {
string s;
cin >> s;
permutation(s, 0, s.length() - 1);
return 0;
}
```
输入字符串,调用 `permutation` 函数,其中 `start` 表示当前字符串排列的起始位置, `end` 表示当前字符串排列的结束位置。在函数内部,首先判断当前字符串是否为一个排列,如果是则输出并返回;否则,对剩余部分递归调用全排列函数。在递归调用前,将当前位置的字符依次与后面的字符交换,得到新的字符串。在递归调用完后,再将当前位置的字符换回原来的字符,以便继续交换。
阅读全文