Advertisement
Ritam_C

Recursion Grid

Apr 16th, 2021
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define ull unsigned long long int
  4. #define ld long double
  5. #define pb push_back
  6. #define p_b pop_back
  7. #define si stack<int>
  8. #define sll stack<ll>
  9. #define sc stack<char>
  10. #define vi vector<int>
  11. #define vll vector<ll>
  12. #define mii map<int, int>
  13. #define msi map<string, int>
  14. #define mci map<char, int>
  15. #define qc queue<char>
  16. #define qi queue<int>
  17. #define qll queue<ll>
  18. using namespace std;
  19.  
  20. ll grid(int n, int m, vector<vector<int>>& dp){
  21.     if(n == 1 || m == 1){
  22.         return 1;
  23.     } else if(dp[n-1][m-1] != -1){
  24.         return dp[n-1][m-1];
  25.     } else{
  26.         dp[n-1][m-1] = grid(n-1, m, dp)+grid(n, m-1, dp);
  27.         return dp[n-1][m-1];
  28.     }
  29. }
  30.  
  31. int main(){
  32.     ios_base::sync_with_stdio(false);
  33.     cin.tie(NULL);
  34.     int n, m;
  35.     cin >> n >> m;
  36.     vector<vector<int>> dp;
  37.     for(int i = 0; i < n; i++){
  38.         vector<int> p;
  39.         for(int j = 0; j < m; j++){
  40.             p.pb(-1);
  41.         }
  42.         dp.pb(p);
  43.     }
  44.     cout << grid(n, m, dp);
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement