int visited[10]={0}; //做标记,n 个数需要做 n 个标记,没用过记作 0, 用过后记作 1
char lists[100];
void dfs(string str,int step)
{
if(step==str.size()) //出口,说明前面所有层都做完了
{
for(int i=0;i<str.size();i++)
printf("%c",lists[i]);
printf("\n");
}
else{
for(int i=0;i<str.size();i++){ //枚举每一种可能
if(visited[i]==0){ //没用过
lists[step]=str[i]; //用它就把它存起来
visited[i]=1; //用过就标记,避免下面的搜索重复使用
dfs(str,step+1); //进入下一层 ,递归调用
visited[i]=0; //取消标记,搜索行不通返回继续使用
}
}
}
}
相关文章
- 12-05主席树+dfs SPOJ BZOJ2588 Count on a tree
- 12-05C++与C字符串相关知识点
- 12-05类(传入的形参为指针形式)-字符串的实现
- 12-05字符串类 class string
- 12-058行代码的模板字符串替换函数
- 12-052021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num
- 12-05113. 路径总和 II + 递归 + dfs
- 12-05【每日一题】Leetcode - 面试题 01.06. Compress String LCCI(字符串压缩)
- 12-05python中字符串(str)的常用处理方法
- 12-05[NOIP2020] 字符串匹配