代码
#include<iostream>
using namespace std;
string s;
bool vis[7];
char ans[7];
void dfs(int dep)
{
//6.终止条件+数据处理
if (dep == s.size() + 1)
{
//搜索打印原则:搜多少,打印多少
for (int i = 1; i < dep; i++)
{
//打印优化,优先使用C语言的输出
printf("%c", ans[i]);
}
printf("\n");
return;
}
//1.枚举方案数量
for (int i = 0; i < s.size(); i++)
{
//2.标记-防止重复搜索
if (!vis[i])
{
vis[i] = 1;//标记
//3.搜索当前层
ans[dep] = s[i];
//4.进入下一层去搜索下一层
dfs(dep + 1);
//5.回溯-还原相关状态
vis[i] = 0; //不一定只取消标记,根据题目而定
}
}
}
int main()
{
cin >> s;
dfs(1);
return 0;
}