Guest User

Untitled

a guest
Nov 26th, 2024
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. class Solution {
  2. public:
  3. int f(int i, int j, int steps, vector<vector<int>>& grid, vector<vector<int>>& dp) {
  4. int n = grid.size();
  5. int m = grid[0].size();
  6.  
  7.  
  8. if (i >= n || j >= m) {
  9. return 1e9;
  10. }
  11.  
  12. if (i == n - 1 && j == m - 1) {
  13. return steps;
  14. }
  15.  
  16. if (dp[i][j] != -1) {
  17. return dp[i][j];
  18. }
  19.  
  20. int ans = 1e9;
  21.  
  22. for (int right = j + 1; right <=j + grid[i][j]; right++) {
  23. ans = min(ans, f(i, right, steps + 1, grid, dp));
  24. }
  25.  
  26. for (int down = i + 1; down <= i + grid[i][j]; down++) {
  27. ans = min(ans, f(down, j, steps + 1, grid, dp));
  28. }
  29. return dp[i][j] = ans;
  30. }
  31.  
  32. int minimumVisitedCells(vector<vector<int>>& grid) {
  33. int n = grid.size();
  34. int m = grid[0].size();
  35.  
  36. vector<vector<int>> dp(n, vector<int>(m, -1));
  37.  
  38. int ans = f(0, 0, 1, grid, dp);
  39. return (ans >= 1e9) ? -1 : ans;
  40. }
  41. };
Advertisement
Add Comment
Please, Sign In to add comment