蓝桥杯练习题(十二)

这篇具有很好参考价值的文章主要介绍了蓝桥杯练习题(十二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

📑前言

本文主要是【算法】——蓝桥杯练习题(十二)的文章,如果有什么需要改进的地方还请大佬指出⛺️

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

602.迷宫


import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;


public class Main {

	static class node{
		int x;
		int y;
		String path;
		public node(int x,int y,String path) {
			this.x = x;
			this.y = y;
			this.path = path;
		}
	}
	static int n=30;
	static int m=50;
	static char[][] a=new char[n][m];
	static char[] direct = {'D','L','R','U'};
	static int dir[][] = {{1,0},{0,-1},{0,1},{-1,0}};
	static boolean visit[][]=new boolean[n][m];
	static String ans;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		read();
		bfs();
	}
	
	public static void bfs() {
		LinkedList<node> q = new LinkedList<>();
		q.add(new node(0, 0, ""));//把起点放入队列
		visit[0][0]=true;
		String shunxv="";//记录最短路径
		while(!q.isEmpty()) {
			node t = q.poll();
			int x = t.x;
			int y = t.y;
			String str1 = t.path;
			//判断是否走到终点
			if (x==n-1&&y==m-1) {
				shunxv=str1;
				break;
			}
			for(int i=0;i<4;i++) {
				int x1=x+dir[i][0];
				int y1=y+dir[i][1];
				if(x1>=0&&x1<=n-1&&y1>=0&&y1<=m-1&&!visit[x1][y1]&&a[x1][y1]=='0') {
					q.add(new node(x1, y1, str1+direct[i]));
					visit[x1][y1]=true;
				}
			}
		}
		System.out.println(shunxv);
	}
	public static void read() {
		Scanner sc = new Scanner(System.in);
		for(int i=0;i<n;i++) {
			String s = sc.nextLine();
			for(int j=0;j<m;j++) {
				a[i][j]=s.charAt(j);
			}
		}
		sc.close();
	}

}

178.全球变暖

package 蓝桥杯第十二次;

import java.util.Scanner;

public class 全球变暖 {

	static boolean visit[][];
	static char a[][];
	static int n;
	static boolean flag;
	static int[][] dir= {{1,0},{0,1},{-1,0},{0,-1}};
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		n = Integer.valueOf(sc.nextLine());
		a = new char[n][n];
		int ans=0;
		visit = new boolean[n][n];
		for(int i=0;i<n;i++) {
			String s = sc.nextLine();
			for(int j=0;j<n;j++) {
				a[i][j]=s.charAt(j);
			}
		}

		for(int i=0;i<n;i++) {
			for(int j=0;j<n;j++) {
				if(a[i][j]=='#'&&!visit[i][j]) {
					flag = false;
					dfs(i, j);
					if (flag==false) {
						ans++;
					}
				}
			}
		}
		System.out.println(ans);
	}
	
	public static void dfs(int x,int y) {
		visit[x][y]=true;
		if(a[x+1][y]=='#'&&a[x][y+1]=='#'&&a[x-1][y]=='#'&&a[x][y-1]=='#') {
			flag=true;
		}
		for(int i=0;i<4;i++) {
			int x1=x+dir[i][0];
			int y1=y+dir[i][1];
			if(a[x1][y1]=='#'&&!visit[x1][y1]) {
				dfs(x1, y1);
			}
			
		}
	}
}

200.岛屿数量

package 蓝桥杯第十二次;

import java.util.Scanner;

public class 岛屿数量 {
/*
11110
11010
11000
00000
1

11000
11000
00000
00011
3
 */
	
	static int n=4;
	static int m=5;
	static boolean visit[][]=new boolean[n][m];
	static char a[][] = new char[4][5];
	static int dir[][]= {{1,0},{0,1},{-1,0},{0,-1}};
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int ans = 0;
		for(int i=0;i<n;i++) {
			String s=sc.nextLine();
			for(int j=0;j<m;j++) {
				a[i][j]=s.charAt(j);
				}
			}
		for(int i=0;i<n;i++) {
			for(int j=0;j<m;j++) {
				if(a[i][j]=='1'&&!visit[i][j]) {
					dfs(i, j);
					ans++;
				}
			}
		}
		System.out.println(ans);
	}

	public static void dfs(int x,int y) {
		visit[x][y]=true;
		if(x<0||y<0||x>=n||y>=m||a[x][y]=='0') {
			return;
		}
		for(int i=0;i<4;i++) {
			int x1 = x+dir[i][0];
			int y1 = y+dir[i][1];
			if (x1>=0&&y1>=0&&x1<n&&y1<m&&a[x1][y1]=='1'&&!visit[x1][y1]) {
				dfs(x1, y1);
			}
		}
	}
}

📑文章末尾

蓝桥杯练习题(十二),蓝桥杯,java,算法,深度优先文章来源地址https://www.toymoban.com/news/detail-811441.html

到了这里,关于蓝桥杯练习题(十二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝桥杯练习题(六)

    本文主要是【算法】——蓝桥杯练习题(六)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句:狠狠沉淀,顶峰相见

    2024年01月18日
    浏览(43)
  • 蓝桥杯练习题(五)

    本文主要是【算法】——蓝桥杯练习题(五)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句:狠狠沉淀,顶峰相见

    2024年02月01日
    浏览(43)
  • 蓝桥杯练习题(三)

    本文主要是【算法】——蓝桥杯练习题(三)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句:狠狠沉淀,顶峰相见

    2024年01月15日
    浏览(47)
  • 蓝桥杯练习题(九)

    本文主要是【算法】——蓝桥杯练习题(九)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句:狠狠沉淀,顶峰相见

    2024年01月17日
    浏览(50)
  • 蓝桥杯练习题-穷举模拟

    本文主要是【穷举模拟】——蓝桥杯练习题-穷举模拟的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句:狠狠沉淀,顶峰相见 题目描述:已知A、B、C、D中有一个凶手,对他们审讯,已

    2024年01月17日
    浏览(46)
  • 蓝桥杯练习题(3的倍数)

    问题描述 小蓝对 3 的倍数很感兴趣。现在他手头有三个不同的数 a,b,c, 他想知道, 这三个数中是不是有两个数的和是 3 的倍数。 例如, 当 a=3,b=4,c=6 时, 可以找到 a 和 c 的和是 3 的倍数。 例如, 当 a=3,b=4,c=7 时, 没办法找到两个数的和是 3 的倍数。 输入格式 输入三行, 每行一

    2024年02月09日
    浏览(37)
  • 蓝桥杯官网练习题(旋转)

    题目描述 图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时针旋转 90 度。 我们用一个 n×m 的二维数组来表示一个图片,例如下面给出一个 3×4 的 图片的例子: 1 3 5 7 9 8 7 6 3 5 9 7 这个图片顺时针旋转 90 度后的图片如下: 3 9 1 5 8 3 9 7 5 7 6 7 给定初始图

    2024年02月09日
    浏览(41)
  • 蓝桥杯官网练习题(正则问题)

    题目描述 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式。 小明想求出这个正则表达式能接受的最长字符串的长度。 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是 6。 输入描述 一个由 x()| 组成的正则表达式。输入长度不超过 100,保证合法。 输出

    2024年02月05日
    浏览(56)
  • 蓝桥杯官网练习题(李白打酒)

    题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 话说大诗人李白,一生好饮。幸好他从不开车。 一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱: 无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。 这一路上,他

    2024年02月09日
    浏览(55)
  • 蓝桥杯官网练习题(移动距离)

    题目描述 X 星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为 1,2,3,··· 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为 6 时,开始情形如下: 1    2     3    4   5   6 12  11  10  9    8   7 13  14  15  ··· 我们的问题是

    2024年02月05日
    浏览(82)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包