fork download
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<math.h>
  4. #include<vector>
  5. #include<queue>
  6. #include<unordered_map>
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.  
  13. vector<vector<int> >arr = {{2, 2, 3},
  14. {4, 5, 6},
  15. {7, 8, 9}};
  16.  
  17. vector<vector<vector<int>> >dp(arr.size(),vector<vector<int> >(arr[0].size(), vector<int>(2, 0)));
  18.  
  19. if((arr[0][0] & 1)) dp[0][0][1] = 1;
  20. else dp[0][0][0] = 1;
  21.  
  22. bool right = false;
  23. bool down = false;
  24.  
  25. for(int i=0; i<arr.size(); i++)
  26. {
  27. for(int j=0; j<arr[0].size(); j++)
  28. {
  29. if(j-1>=0) right = true;
  30. else right = false;
  31.  
  32. if(i-1>=0) down = true;
  33. else down = false;
  34.  
  35. if((arr[i][j] & 1))
  36. {
  37. if(right)
  38. {
  39. dp[i][j][0] += dp[i][j-1][1];
  40. dp[i][j][1] += dp[i][j-1][0];
  41. }
  42. if(down)
  43. {
  44. dp[i][j][0] += dp[i-1][j][1];
  45. dp[i][j][1] += dp[i-1][j][0];
  46. }
  47. }
  48. else
  49. {
  50. if(right)
  51. {
  52. dp[i][j][0] += dp[i][j-1][0];
  53. dp[i][j][1] += dp[i][j-1][1];
  54. }
  55. if(down)
  56. {
  57. dp[i][j][0] += dp[i-1][j][0];
  58. dp[i][j][1] += dp[i-1][j][1];
  59.  
  60. }
  61. }
  62. }
  63. }
  64.  
  65. cout << "Final Ans: -> " << dp[arr.size()-1][arr[0].size()-1][0] << endl;
  66.  
  67. return 0;
  68. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
Final Ans: -> 6