题目:输入一个字符串,打印出该字符串中字符的所有排列。
例如输入字符串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;
}
本文介绍了一个使用深度优先搜索(DFS)实现的字符串全排列算法。通过递归方式生成字符串的所有可能排列,并打印输出。该算法适用于求解字符的所有可能组合。
1192

被折叠的 条评论
为什么被折叠?



