字符串的全排列问题

来源:互联网 发布:从事数据分析看什么书 编辑:程序博客网 时间:2024/05/30 19:33


题目:输入一个字符串,打印出该字符串中字符的所有排列。

例如输入字符串abc,输出结果为abc,acb,bac,bca,cab,cba

解题思路:我们求整个字符串的排列,可以看成两步:1,求所有可能出现在第一个位置的字符,即把第一个字符和后面所有的字符交换;2,固定第一个字符,然后求后面的所有字符的排列。这个时候我们仍然把后面的所有字符分成两部分,递归实现

代码:

#include<iostream>#include<string>using namespace std;void swap(char *x, char* y) {char temp = *x;*x = *y;*y = temp;}void Permutation(string &p, int i, int n){if (i == n - 1)cout << p << endl;else{for (int j = i; j < n; j++){swap(p[i], p[j]);Permutation(p, i + 1, n);swap(p[i], p[j]);}}}int main(){string s;cin >> s;int len = s.size();Permutation(s, 0, len);return 0;}


0 0