您的位置:首页 > 编程语言 > C语言/C++

字符串的排列 C++实现

2014-03-04 13:07 453 查看
题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来

的所有字符串abc、acb、bac、bca、cab和cba。

//============================================================================
// Name        : PermutationAndCombination.cpp
// Author      : Lee
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include<deque>
using namespace std;

void perAndCom(char arr[],int len,deque<char> dq){

if(1==len){
while(dq.size()!=0){
cout<<dq.front();
dq.pop_front();
}
cout<<arr[0]<<endl;
return;
}

for(int i=0;i<len;i++){
deque<char> dq_one;
for(deque<char>::iterator itr=dq.begin();itr!=dq.end();itr++){

dq_one.push_back(*itr);

}
dq_one.push_back(arr[i]);
char child[len-1];
for(int j=0;j<i;j++){
child[j]=arr[j];
}
for(int j=i+1;j<len;j++){
child[j-1]=arr[j];
}
perAndCom(child,len-1,dq_one);
}
}
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
char test[4]={'a','b','c','d'};
deque<char> dq;
perAndCom(test,4,dq);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: