备战蓝桥之搜索

2024.3.12

P2802 回家 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)


 



import java.awt.Checkbox;
import java.awt.PageAttributes.OriginType;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.math.MathContext;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.TreeSet;

import javax.print.attribute.standard.JobMessageFromOperator;
public class Main {	
  public static void main(String[] args) throws NumberFormatException, IOException  {
	  Scanner scanner=new Scanner(System.in);
	 BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
	 PrintWriter pw1=new PrintWriter(System.out);
     String[] aStrings=br1.readLine().split(" ");
aa=Integer.parseInt(aStrings[0]);
bb=Integer.parseInt(aStrings[1]);
cc=new int[aa][bb];
visited=new int[aa][bb];
int a,b;
for(a=0;a<aa;a++) {
	String[] bStrings=br1.readLine().split(" ");
	for(b=0;b<bb;b++) {
		cc[a][b]=Integer.parseInt(bStrings[b]);
	}
}
for(a=0;a<aa;a++) {
	for(b=0;b<bb;b++) {
		if(cc[a][b]==2) {
			startx=a;
			starty=b;
		}
		if(cc[a][b]==3) {
			
			endx=a;
			endy=b;
			
		}
	}
}
ll1.add(new dian(startx, starty, 6, 0));
visited[startx][starty]=6;
while(ll1.size()!=0) {
	dian c1=ll1.remove();
	int x=c1.x;
	int y=c1.y;
	if(x==endx&&y==endy) {
		
		System.out.println(c1.juli);
		return;
	}
	int d;
	int juli=c1.juli;
	int blue=c1.blou;
	for(d=0;d<4;d++) {
		int x1=x+xx[d];
		int y1=y+yy[d];
		int blue2=blue;
		if(x1>=0&&x1<aa&&y1>=0&&y1<bb&&blue2>1&&(cc[x1][y1]==4||cc[x1][y1]==1||cc[x1][y1]==3)) {
			blue2=blue2-1;
			if(visited[x1][y1]<blue2) {
				
				if(cc[x1][y1]==4) {
					blue2=6;
				}
				
				visited[x1][y1]=blue2;
				ll1.add(new dian(x1, y1, blue2, juli+1));
			}
		}
	}
}
System.out.println("-1");
	}
	public static int aa,bb;
	public static int startx,starty;
	public static int endx,endy;
	public static int[][] visited;
	public static int[][] cc;
	public static int[] xx= {-1,1,0,0};
	public static int[] yy= {0,0,-1,1};
	public static LinkedList<dian> ll1=new LinkedList<>();
	}
class dian{
	int x;
	int y;
	int blou;
	int juli;
	public dian(int x, int y, int blou, int juli) {
		super();
		this.x = x;
		this.y = y;
		this.blou = blou;
		this.juli = juli;
	}
	
}


package qq;

import java.awt.Checkbox;
import java.awt.PageAttributes.OriginType;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.math.MathContext;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.TreeSet;
public class main {	
  public static void main(String[] args) throws NumberFormatException, IOException  {
	  Scanner scanner=new Scanner(System.in);
	 BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
	 PrintWriter pw1=new PrintWriter(System.out);
     String[] aStrings=br1.readLine().split(" ");
 bb=Integer.parseInt(aStrings[0]);
 cc=Integer.parseInt(aStrings[1]);
 visited=new int[bb][cc];
 aa=new char[bb][cc];
 int a,b;
 for(a=0;a<bb;a++) {
	aa[a]=br1.readLine().toCharArray();
 }
 for(a=0;a<bb;a++) {
	 for(b=0;b<cc;b++) {
		if(aa[a][b]=='s') {
			startx=a;
			starty=b;
		}
		if(aa[a][b]=='g') {
			endx=a;
			endy=b;
		}
	 }
 }
 ll1.add(new dian(startx, starty));
 visited[startx][starty]=1;
 while(ll1.size()!=0) {
	 dian c1=ll1.remove();
	 int x=c1.x;
	 int y=c1.y;
	 int d;
	 if(x==endx&&y==endy) {
		 System.out.println("Yes");
		 return;
	 }
	 for(d=0;d<4;d++) {
		 int x1=x+xx[d];
		 int y1=y+yy[d];
	
		 if(x1>=0&&x1<bb&&y1>=0&&y1<cc&&visited[x1][y1]==0&&(aa[x1][y1]=='.'||aa[x1][y1]=='g')) {
			 
			 visited[x1][y1]=1;
			 ll1.add(new dian(x1, y1));
		 }
	 }
 }
 System.out.println("No");
  }
public static LinkedList<dian> ll1=new LinkedList<>();
public static int[][] visited;
public static char[][] aa;
public static int[] xx= {-1,1,0,0};
public static int[] yy= {0,0,-1,1};
public static int bb,cc;
public static int startx,starty;
public static int endx,endy;
}
class dian{
	int x;
	int y;
	public dian(int x, int y) {
		super();
		this.x = x;
		this.y = y;
	}
	
}

相关推荐

  1. 备战搜索

    2024-03-13 02:34:02       21 阅读
  2. 备战思维

    2024-03-13 02:34:02       21 阅读
  3. 备战思维

    2024-03-13 02:34:02       19 阅读
  4. 备战每日一题

    2024-03-13 02:34:02       29 阅读

最近更新

  1. vue3 学习笔记02 -- 配置路由router+导航守卫

    2024-03-13 02:34:02       0 阅读
  2. Win11安装WSL2在非系统盘(非C盘)+图形化界面

    2024-03-13 02:34:02       0 阅读
  3. c语言指针

    2024-03-13 02:34:02       1 阅读
  4. Mojo模板引擎:释放Web开发的无限潜能

    2024-03-13 02:34:02       1 阅读
  5. ffmpeg 文档 - 未完

    2024-03-13 02:34:02       1 阅读

热门阅读

  1. C语言分支和循环总结

    2024-03-13 02:34:02       24 阅读
  2. Github 2024-03-06 C开源项目日报 Top10

    2024-03-13 02:34:02       21 阅读
  3. 理解记忆相关

    2024-03-13 02:34:02       20 阅读
  4. (力扣题库)字符串相乘(C++)

    2024-03-13 02:34:02       24 阅读
  5. 动态规划 Leetcode 343 整数划分

    2024-03-13 02:34:02       24 阅读
  6. c++ primer中文版第五版作业第十六章

    2024-03-13 02:34:02       19 阅读
  7. 安卓kotlin面试题 71-80

    2024-03-13 02:34:02       20 阅读
  8. GO语言-切片底层探索(下)

    2024-03-13 02:34:02       24 阅读
  9. 日常007:alias给长命令起个简短的别名

    2024-03-13 02:34:02       23 阅读
  10. js关于防抖和节流的问题

    2024-03-13 02:34:02       22 阅读