class Solution{
public:
void findPaths(int i, int j, vector<string>& paths ,string path, vector<vector<int>>& mat){
if(i == mat.size()-1 && j == mat.size()-1)
{
paths.push_back(path);
return;
}
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};
char move[4] = {'R','D','L','U'};
mat[i][j] = 0;
for(int k = 0; k < 4; k++){
int x = i + dx[k], y = j+ dy[k];
if((x>=0 && x < mat.size() && y >= 0 && y < mat.size()) && mat[x][y] != 0){
path.push_back(move[k]);
findPaths(x, y, paths, path, mat);
path.pop_back();
}
}
mat[i][j] = 1;
}
vector<string> findPath(vector<vector<int>> &mat, int n) {
// Your code goes here
vector<string> paths;
string path;
if(mat[0][0] == 0)
return paths;
findPaths(0, 0, paths, path, mat);
// sort(paths.begin(), paths.end());
return paths;
}
};