剑指Offer(Java版)第十一题

Posted 桌子哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer(Java版)第十一题相关的知识,希望对你有一定的参考价值。

public class Class112 {
public boolean findPath(char[] matrix, int rows, int cols, char[] str){
boolean anchor[] = new boolean[matrix.length];
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
int count = 0;
if(findPathMain(matrix, row, col, rows, cols, str, count, anchor)){
return true;
}
}
}
return false;
}
public boolean findPathMain(char[] matrix, int row, int col, int rows, int cols, char[] str, int count, boolean[] anchor){
int index = row * cols + col;
if(row < 0 || row >= rows || col < 0 || col >= cols || matrix[index] != str[count] || anchor[index] == true){
return false;
}
if(count == str.length - 1){
return true;
}
anchor[index] = true;

if(findPathMain(matrix,row,col-1,rows,cols,str,count+1,anchor)
||findPathMain(matrix,row,col+1,rows,cols,str,count+1,anchor)
||findPathMain(matrix,row-1,col,rows,cols,str,count+1,anchor)
||findPathMain(matrix,row+1,col,rows,cols,str,count+1,anchor)){
return true;
}
anchor[index] = false;
return false;
}


public void test1() {
char[] matrix = "ABTGCFCSJDEH".toCharArray();
int rows = 3;
int cols = 4;
char[] str = "abfb".toCharArray();
if (!findPath(matrix, rows, cols, str))
System.out.println("Test1 passed.");
else
System.out.println("Test1 failed.");
}
public void test2() {
char[] matrix = "ABTGCFCSJDEH".toCharArray();
int rows = 3;
int cols = 4;
char[] str = "ABFB".toCharArray();
if (!findPath(matrix, rows, cols, str))
System.out.println("Test2 passed.");
else
System.out.println("Test2 failed.");
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Class11 c = new Class11();
c.test1();
c.test2();
}

}

以上是关于剑指Offer(Java版)第十一题的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer(Java版)第二十一题:链表中环的入口结点

剑指offer第十一题:二进制中1的个数

每日一题剑指 Offer II 041. 滑动窗口的平均值

《剑指offer》第五十一题(数组中的逆序对)

《剑指offer》第二十一题:调整数组顺序使奇数位于偶数前面

剑指Offer(Java版)第十五题:打印1到最大的n位数