5
bool find(vector<vector<char>> &mat, int row, int col, int open) {6
if (row < 0 || col < 0 || row >= n || col >= m || open < 0) {9
if (dp[row][col][open] != -1) {10
return dp[row][col][open];12
if (row == n - 1 && col == m - 1) {13
if (mat[row][col] == '(') {20
if (mat[row][col] == '(') {21
if (find(mat, row + 1, col, open + 1) || find(mat, row, col + 1, open + 1)) {25
if (find(mat, row + 1, col, open - 1) || find(mat, row, col + 1, open - 1)) {29
return dp[row][col][open] = false;31
bool hasValidPath(vector<vector<char>> &mat) {32
memset(dp, -1, sizeof(dp));35
return find(mat, 0, 0, 0);