📑前言
本文主要是【算法】——dfs与bfs的文章,如果有什么需要改进的地方还请大佬指出⛺️
🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见
目录
- 📑前言
- 以1-n的全排列为例
- dfs
- bfs
- 📑文章末尾
以1-n的全排列为例
dfs
package 搜索1;
public class 全排列dfs {
static int n = 3;
public static void main(String[] args) {
// TODO Auto-generated method stub
dfs(0, "");
}
public static void dfs(int depth,String ans) {
//如果搜索到达n层,即到达递归出口
if(depth==n) {
System.out.println(ans);
return;
}
for(int i=1;i<=n;i++) {
//如果不包含该字符,进行添加处理
if(!ans.contains(i+""))
dfs(depth+1, ans+i);
}
}
}
bfs
package 搜索1;
import java.util.LinkedList;
import java.util.Queue;
public class 全排列bfs {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 3;
Queue<String> q = new LinkedList<>();
for(int i=1;i<=n;i++) q.offer(i+"");
while(!q.isEmpty()) {
String head = q.poll();
System.out.println("head:"+head);
for(int i=1;i<=n;i++) {
if(head.contains(i+"")) continue;
String son=head+i;
System.out.println("son:"+son);
if(son.length()==n) {
System.out.println(son);
}else {
q.offer(son);
}
}
}
}
}