题目:输入一个字符串,打印出该字符串中字符的所有排列。
例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串
abc、acb、bac、bca、cab和cba。
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
bool isVisited[3];
void dfs(string str, string rlt, const int len, int cur)
{
if(cur==len)
{
cout<<rlt<<endl;
return ;
}
for(int i=0; i<=len-1; i++)
{
if(!isVisited[i])
{
rlt+=str[i];
isVisited[i]=true;
dfs(str,rlt,len,cur+1);
rlt.erase(cur);
isVisited[i]=false;
}
}
}
int main()
{
string str="abc";
string rlt="";
memset(isVisited,0,sizeof(isVisited));
dfs(str,rlt,3,0);
return 0;
}