【计蒜客系列】挑战难题139:字符全排列

来源:互联网 发布:北京交通大学知行bt 编辑:程序博客网 时间:2024/06/05 18:11

题目来源:计蒜客

(这题的测试用例太坑,代码参考这位神)

要求:

输入一个可能含有重复字符的字符串,打印出该字符串中所有字符的全排列,输出时以字典序顺序输出,用空格分隔。

输入数据是一个长度不超过10个字符的字符串,以逗号结尾。


样例输出

abc,

样例输出

abc acb bac bca cab cba


#include<iostream>#include<string>#include<set>using namespace std;string s;int n;set<string> res;void dfs(int i){    if(i == n){        return;    }    res.insert(s);    for(int j = i; j < n; ++j){        swap(s[i], s[j]);        dfs(i + 1);        swap(s[i], s[j]);    }}int main(){    cin >> s;    n = s.length() - 1;    s.resize(n);    dfs(0);    set<string>::iterator it = res.begin();    cout << *it;    for(++it; it != res.end(); ++it){        cout << " " << *it;    }    cout << endl;}


0 0
原创粉丝点击