题解 | #矩阵中的路径#
矩阵中的路径
https://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6
int dx[] = {-1, 1, 0, 0}; int dy[] = {0, 0, -1, 1}; bool find_flag =false; class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param matrix char字符型vector<vector<>> * @param word string字符串 * @return bool布尔型 */ // const int maxsize =1000; void dfs(vector<vector<char> >& matrix,int x, int y, bool vis[1000][1000], int shape_x, int shape_y,string path,const string teststr) { if(path == teststr ){ find_flag =true; } if (x >= 0 && x < shape_x && y >= 0 && y < shape_y &&!vis[x][y]&&teststr.substr(0,path.size())==path) { path.push_back(matrix[x][y]); vis[x][y] = true; cout<<path<<endl; for (int i = 0; i < 4; i++) { int next_x = x + dx[i]; int next_y = y + dy[i]; dfs(matrix,next_x, next_y, vis, shape_x, shape_y,path,teststr); } vis[x][y ] = false; path.pop_back(); } return ; } bool hasPath(vector<vector<char> >& matrix, string word) { // cout<<matrix.size()<<endl; // write code here bool vis[1000][1000] = {false}; for (int i = 0; i < matrix.size(); ++i) { for (int j = 0; j < matrix[i].size(); ++j) { dfs(matrix, i, j, vis, matrix.size(), matrix[i].size(),"",word); } } return find_flag? true:false; } };