Untitled
unknown
c_cpp
3 years ago
876 B
12
Indexable
vector<string> findPath(vector<vector<int>> &m, int n) {
vector<string> paths;
findPathUtil(m, n, 0, 0, paths, "");
return paths;
}
void findPathUtil(vector<vector<int>> &m, int n, int i, int j,
vector<string> &paths, string path) {
if (i < 0 || j < 0 || i >= n || j >= n
|| m[i][j] == 0 || m[i][j] == 2) // m[i][j] == 2 means visited
return;
if (i == n-1 && j == n-1) {
paths.push_back(path);
return;
}
m[i][j]++; // m[i][j] == 2 means visited
findPathUtil(m, n, i, j-1, paths, path + 'L');
findPathUtil(m, n, i, j+1, paths, path + 'R');
findPathUtil(m, n, i-1, j, paths, path + 'U');
findPathUtil(m, n, i+1, j, paths, path + 'D');
m[i][j]--; // m[i][j] == 1 means not visited
}Editor is loading...