回溯法_矩阵中的路径
解题思路
虽然剑指offer差不多都快看一遍了,但是碰到这道题还是没有头绪。。。还是看大佬的参考答案吧。
# -*- coding:utf-8 -*-
class Solution:
def hasPath(self, matrix, rows, cols, path):
# write code here
boolmatrix = [True]*rows*cols
for i in range(rows):
for j in range(cols):
if (self.haspathcore(matrix, rows, cols, i, j, path, boolmatrix)):
return True
return False
def haspathcore(self, matrix, rows, cols, i, j, path, boolmatrix):
if not path:
return True
index = i*cols + j
if i<0 or i>=rows or j<0 or j>=cols or matrix[index]!=path[0] or boolmatrix[index]==False:
return False
boolmatrix[index]=False
if (self.haspathcore(matrix, rows, cols, i-1, j, path[1:], boolmatrix) or
self.haspathcore(matrix, rows, cols, i+1, j, path[1:], boolmatrix) or
self.haspathcore(matrix, rows, cols, i, j+1, path[1:], boolmatrix) or
self.haspathcore(matrix, rows, cols, i, j-1, path[1:], boolmatrix)):
return True
boolmatrix[index]=True
return False