蓝桥杯练习题dfs与bfs

前言

本文主要是【算法】——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);
				}
			}
		}
	}

}

文章末尾

在这里插入图片描述

你可能感兴趣的:(深度优先,蓝桥杯,宽度优先,算法,java)