java 蓝桥杯 我们的征途是星辰大海

Posted //我是小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 蓝桥杯 我们的征途是星辰大海相关的知识,希望对你有一定的参考价值。

java 蓝桥杯 DFS 我们的征途是星辰大海

问题描述
题目

样例输入:
  2
  2
  S.
  #T
  2
  RD
  DR
  3
  S.#
  .#.
  .T#
  3
  RL
  DDD
  DDRR
样例输出:
  I get there!
  I am dizzy!
  I have no idea!
  I am out!
  I get there!

思路分析

仔细阅读题目会发现其实这就是一个类似于走迷宫的简单问题,有必要注意的是样例的接收顺序,然后定义dfs方法,根据题目意思判断输出即可,具体的思路都在注释里了😁

import java.util.Scanner;

public class 星辰大海 {
	static char[][]map;
	static int n;
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int k=sc.nextInt();
		//循环K次
		while (k-->0) {
			//接收n初始化地图
			n=sc.nextInt();
			map=new char[n][n];
			for (int i = 0; i < n; i++) {
				String str=sc.next();
				for (int j = 0; j < n; j++) {
					map[i][j]=str.charAt(j);
				}
			}
			//遍历地图找到'S'(找到起点的坐标)
			int x=0,y=0;
			for (int i = 0; i <n; i++) {
				for (int j = 0; j <n; j++) {
					if(map[i][j]=='S') {
						x=i;
						y=j;
					}
				}
			}
			//接收询问次数
			int q=sc.nextInt();
			for (int i = 0; i < q; i++) {
				String s=sc.next();
				//执行深搜 参数为x坐标,y坐标,从0开始的索引,询问字符串
				dfs(x,y,0,s);
			}
		}
	}
	public static void dfs(int x,int y,int index,String s){
		//边界判断!!!注意这个判断要放在第一,不然会爆
		if(x<0||y<0||x>=n||y>=n) {
			System.out.println("I am out!");
			return;
		}
		//询问字符串结束,并且所在点为T,说明到达目的地
		if(index==s.length()&&map[x][y]=='T') {
			System.out.println("I get there!");
			return;
		}
		//询问字符串结束,并且所在点不为T,说明没有到达目的地
		if(index==s.length()&&map[x][y]!='T') {
			System.out.println("I have no idea!");
			return;
		}
		//途中遇到障碍物!
		if(map[x][y]=='#') {
			System.out.println("I am dizzy!");
			return;
		}
		//指令没有结束就已经到达目的地
		if(map[x][y]=='T') {
        	System.out.println("I get there!");
    		return;
        }
		//左右上下走
		if(s.charAt(index)=='L') {
			dfs(x,y-1,index+1,s);
		}else if(s.charAt(index)=='R') {
			dfs(x,y+1,index+1,s);
		}else if(s.charAt(index)=='U') {
			dfs(x-1,y,index+1,s);
		}else if(s.charAt(index)=='D') {
			dfs(x+1,y,index+1,s);
		}
	}
}

以上是关于java 蓝桥杯 我们的征途是星辰大海的主要内容,如果未能解决你的问题,请参考以下文章

跳脱旧我——心智砥砺之旅系列文章导读

祝贺富爸爸队的投资分析作品成功进入拍拍贷魔镜杯复赛阶段

javaer的目标,是星辰大海!

高考后的我们要去追逐星辰大海

第七届蓝桥杯java b组难吗

产品化的EasyStack即是星辰大海