剑指offer2 问题12 矩阵中的路径 Java实现
2017-08-24 20:18
344 查看
题目来源:剑指offer
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子思路:http://blog.csdn.net/ouyangyanlan/article/details/72874885
import java.util.Arrays; public class J_JuZhenLujing { /* public boolean hasPath(char [][]matrix,String str){ if (matrix.length==0||str.length()==0) return false; boolean res=false; boolean visited[][]=new boolean[matrix.length][matrix[0].length]; for (int i=0;i<matrix.length;i++) { Arrays.fill(visited[i],false); } for (int i=0;i<matrix.length;i++) for (int j=0;j<matrix[0].length;j++){ res=hasPathCore(); } } public boolean hasPathCore(,String str){ }*/ //public class Solution { public boolean hasPath(char[] matrix, int rows, int cols, char[] str) { if(matrix==null || rows<=0 || cols<=0 || str==null){ return false; } //if(str.length==0){ // return true; //} boolean[] visited = new boolean[matrix.length]; for(int i=0; i<rows; i++){ for(int j=0; j<cols; j++){ if(findPath(matrix, i, j, rows, cols, 0, visited, str)){ return true; } } } return false; } //尝试寻找路径 public boolean findPath(char[] matrix, int row, int col, int rows, int cols, int k, boolean[] visited, char[] str){ if(row<0 || row>=rows || col<0 || col>=cols || str[k]!=matrix[row*cols+col] || visited[row*cols+col]){ return false; } if(k==str.length-1){ return true; } visited[row*cols+col] = true; if(findPath(matrix, row+1, col, rows, cols, k+1, visited, str) || findPath(matrix, row, col+1, rows, cols, k+1, visited, str) || findPath(matrix, row-1, col, rows, cols, k+1, visited, str) || findPath(matrix, row, col-1, rows, cols, k+1, visited, str)){ return true; } visited[row*cols+col] = false; return false; } }
相关文章推荐
- JAVA回溯, 实现 矩阵中的路径寻找问题
- 剑指offer面试题12:矩阵中的路径(java实现)
- 剑指offer面试题12:矩阵中的路径Java实现版
- 算法java实现--分支限界法--单源最短路径问题
- JAVA实现顺时针打印矩阵问题(《剑指offer》)
- 动态规划算法——矩阵连乘问题(java实现)
- 最短路径问题 java实现 源代码
- 街区最短路径问题Java实现
- 回溯法--矩阵中的路径问题(java)
- 最短路径问题-Graph Java实现
- 矩阵最小路径和(java实现)
- 《剑指offer2》问题9 用两个栈实现队列 Java实现
- javabean操作文件正确,但是Jsp调用javabean时文件路径出错问题解决之JavaBean访问本地文件实现路径无关实现方法
- 矩阵中的路径(Java实现)
- java实现数据库备份和恢复源码---解决路径带空格引发的问题
- 矩阵连乘问题的java实现
- (转)javabean操作文件正确,但是Jsp调用javabean时文件路径出错问题解决之JavaBean访问本地文件实现路径无关实现方法
- 剑指offer编程题Java实现——面试题12相关题大数的加法、减法、乘法问题的实现
- 算法java实现--贪心算法--单源最短路径问题--Dijkstra算法
- java实现DFS求路径是否有解问题