去重的全排序

来源:互联网 发布:疯帽子与爱丽丝 淘宝 编辑:程序博客网 时间:2024/09/21 08:57
/*去重的全排列。。。再看看别人的代码,感觉差距好大。*/#include<iostream>#include<string>#include<algorithm>using namespace std;void permutation(string input);int main(){string input="aabc";permutation(input);return 0;}void permutation(string input){cout<<input<<endl;while(true){int idx=-1;for(int i=input.size()-1;i>0;--i){if(input[i-1]<input[i]){idx=i-1;break;}}if(idx==-1) break;char X='z';int C;for(int j=input.size()-1;j>idx;--j){if(input[j]<=input[idx])continue;if(input[j]<=X){C=j;X=input[j];}}swap(input[C],input[idx]);int len=input.size()-1-idx;for(int k=1;k<=(len/2);++k)swap(input[idx+k],input[input.size()-k]);cout<<input<<endl;}}

0 0
原创粉丝点击