蓝桥杯练习题dfs与bfs

发布时间:2024年01月20日

📑前言

本文主要是【算法】——dfs与bfs的文章,如果有什么需要改进的地方还请大佬指出??

🎬作者简介:大家好,我是听风与他🥇
??博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见

以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);
				}
			}
		}
	}

}

📑文章末尾

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_61494821/article/details/135720459
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。