| 26 | ostream &operator<<(ostream &ostream, const vector<T> &c) { for (auto &it : c) { cout << it << " "; } return ostream; } |
| 27 | |
| 28 | int f(int i,int k,vector<vector<char>> &grid,vector<vector<int>> &dp) { |
| 29 | if (i < 0 || k < 0 ) return 0; |
| 30 | if (i == 0 && k == 0 && grid[i][k] != '*') return 1; |
| 31 | |
| 32 | if (grid[i][k] == '*') return 0; |
| 33 | if (dp[i][k] != -1) return dp[i][k]; |
| 34 | int one = f(i-1,k,grid,dp) % mod; |
| 35 | int second = f(i,k-1,grid,dp) % mod; |
| 36 | return (dp[i][k] = (one + second) %mod) %= mod; |
| 37 | } |
| 38 | |
| 39 | void solve() { |
| 40 | int N; cin >> N; |