There is a rectangular board that is divided into n rows by m columns of cells. Each cell is either empty or it contains an obstacle. You are given the description of the board in the board. Each character in board represents one cell. More precisely, the character board[i][j] represents the cell at coordinates (row i, column j). The character ‘#’ represents an obstacle, the character ‘.’ is an empty cell.
You would like to travel from the top left corner to the bottom right corner of the board in exactly k steps. More precisely, you want to perform the following sequence of actions:
Enter the board by stepping onto the cell at coordinates (0, 0): the top left corner. Make exactly k steps. In each step, you’ll move from your current cell to one of the cells that share a side with your current cell. In other words, in each step you’ll go one cell up, down, left, or right. After the k-th step, you must be in the bottom right corner: at coordinates (n-1, m-1). Note that you can only step onto empty cells. You have to move in each step, it is not allowed to stay in the same cell. You are allowed to visit each empty cell arbitrarily many times. You are not allowed to leave the board while making the k steps.
You are given the board and the k. Determine whether it is possible to reach the bottom right corner in the way described above. If there is no solution, return an empty . If there are some solutions, choose any one of them and return a containing its description.
If a solution exists, the returned should consist of k characters, each describing one step. Each character should be one of ‘U’ (up), ’D' (down), ‘L’ (left), and ‘R’ (right).
how to solve
I can solve this problem by using bfs search. There is some points to solve this problem. Firstly, the parity of step is same as the sum of the goal point’s x and y. So If I can find the goal route, and this step’s parity is same as the parity of k, I can get the way to reach the goal by k step.