📑前言
本文主要是【算法】——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 stubdfs(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 stubint 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);}}}}}