must use python
【General guidance】The answer provided below has been developed in a clear step by step manner.Step1/3To solve this problem, we can use a simple approach of trying all possible start positions and keeping track of the maximum number of diamonds that can be collected from each start position. For each start position, we can perform a depth-first search (DFS) to explore all reachable cells and count the number of diamonds that can be collected.ExplanationWe can use a boolean visited array to keep track of which cells we have already visited, and skip over cells with obstacles.Explanation:Please refer to solution in this step.Step2/3We can implement the DFS using recursion. The base case is when we reach an obstacle or a visited cell, in which case we simply return 0. Otherwise, for each of the four adjacent cells (up, down, left, right), we recursively call the DFS function and add up the number of diamonds returned by each call.ExplanationFinally, we return the maximum number of diamonds that can be collected from the current start position.Explanation:Please refer to solution in this step.Step3/3Here's the Python code for the ... See the full answer