kirin 980 还行
First, write their own time to 5%, 5% space, garbage Code
1 bool ok(vector<vector<int>> grid,int m,int n) 2 { 3 bool res = true; 4 for (int i = 0; i < grid.size(); i++) 5 { 6 for (int j = 0; j < grid[0].size(); j++) 7 { 8 if (grid[i][j] == 0) 9 { 10 res = false; 11 break; 12 } 13 } 14 } 15 return res; 16 } 17 int use(vector<vector<int>> grid, int m, int n) 18 { 19 if (m < grid.size() && n < grid[0].size()&& grid[m][n] == 2) 20 return 2; 21 else if (m < grid.size() && n < grid[0].size() && (grid[m][n] == 0||grid[m][n]==1) ) 22 { 23 return 1; 24 } 25 else 26 return -1; 27 } 28 void back(vector<vector<int>>& grid, int& res,int m,int n) 29 { 30 if (use(grid, m, n) == 1) 31 { 32 grid[m][n] = -1; 33 m++; 34 back(grid, res, m, n); 35 m--; 36 grid[m][n] = 0; 37 38 grid[m][n] = -1; 39 n++; 40 back(grid, res, m, n); 41 n--; 42 grid[m][n] = 0; 43 44 grid[m][n] = -1; 45 m--; 46 back(grid, res, m, n); 47 m++;; 48 grid[m][n] = 0; 49 50 grid[m][n] = -1; 51 n--; 52 back(grid, res, m, n); 53 n++; 54 grid[m][n] = 0; 55 } 56 else if (use(grid, m, n) == 2&& ok(grid,m,n)) 57 res++; 58 else 59 return; 60 } 61 int uniquePathsIII(vector<vector<int>>& grid) { 62 int res = 0; 63 if (grid.size() == 0) 64 return 0; 65 int m = 0, n = 0; 66 for (int i = 0; i < grid.size(); i++) 67 { 68 for (int j = 0; j < grid[0].size(); j++) 69 { 70 if (grid[i][j] == 1) 71 { 72 m = i; 73 n = j; 74 break; 75 } 76 } 77 } 78 back(grid, res,m,n); 79 return res; 80 }
Second, the problem solution
Hamilton, dynamic programming