ShortestPath
来源:互联网 发布:数据脱敏是什么意思 编辑:程序博客网 时间:2024/06/07 23:34
题目描述:输入n,m,即有n行m列的矩阵;s代表开始,e代表结束,"."代表可走,"#"代表不可走,求从s到e的最短路径.若无,输出-1.
输入:
4 5
. . s # e
. # . # .
# . . # .
. . . . .
输出:8
package 深搜;import java.util.Scanner;public class 最短路径问题 { static char map[][]=new char[100][100];//存储 static int vis[][]=new int[100][100];//标记 static int b[][]={{1,0},{-1,0},{0,-1},{0,1}};//方向 static int n,m,d=0; static int max=2147480000; static boolean flag=false; static void dfs(int x,int y,int dep){ if(dep>d)return; //进行优化######## if(map[x][y]=='e'){ flag=true; //加标记,如果走不到e,输出-1 d=dep; return; } for(int i=0;i<4;i++){ int xx=x+b[i][0]; int yy=y+b[i][1]; if(xx<0 || yy<0 || xx>=n || yy>=m)continue; //越界 if(map[xx][yy]=='#' || vis[xx][yy]!=0)continue; //此路不通或者已经走过 vis[xx][yy]=1; dfs(xx,yy,dep+1); vis[xx][yy]=0; } }public static void main(String[] args) {// TODO Auto-generated method stub Scanner scan=new Scanner(System.in); n=scan.nextInt(); m=scan.nextInt(); String str=null; int x=0,y=0; for(int i=0;i<n;i++){ str=scan.next(); for(int j=0;j<m;j++){ map[i][j]=str.charAt(j); if(map[i][j]=='s'){ x=i; y=j; } } } d=max; dfs(x,y,0); if(flag) System.out.println(d); else System.out.println("-1");}}
阅读全文
0 0
- shortestPath
- ShortestPath
- PTA ShortestPath[4]
- PTA ShortestPath[3]
- POJ 3295 Wormholes (ShortestPath.Bellman-Ford)
- 关于最短路径ShortestPath的几种算法
- CF 一个不知道题号的题。。 B. ShortestPath Query
- 迷宫最短路径问题(ShortestPath)的求解——利用链式队列
- 【codeforce Gym 100570B】【最短路SPFA】 ShortestPath Query 【询问单源最短路径,每条边有一个颜色,要求路径上相邻边的颜色不能相同】
- spring boot 集成多线程
- charles使用教程指南
- Java常见Lock(三): lock之ReadWriteLock、ReentrantReadWriteLock
- 算法----C中的各类数据在内存中的分布情况(数据区,代码区,堆栈区,操作系统堆栈 详细说明)
- 三种简单的企业预测模型应用
- ShortestPath
- ld script 学习笔记
- 产链接和短连接的区别
- 动态代理机制
- ThreadPoolExecutor线程池源码分析
- Java 加密解密zip文件(亲测有效,附源码和jar包)
- PHP-BOM
- Ubuntu 17.10 将“关闭、最小化、最大化”按钮移动到标题栏左侧
- Django 博客