Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cassert>
- #include <algorithm>
- #include <vector>
- #include <unordered_map>
- #include "optimization.h"
- #include <unordered_map>
- #define all(a) a.begin, a.end()
- using namespace std;
- vector<vector<int>> dp;
- int n,m;
- int calc(int j, int i){
- if (i < 1 || j < 1 || i > n || j > m){
- return 0;
- }
- if (i == 1 && j == 1){
- return 1;
- }
- if (dp[j][i] >= 0){
- return dp[j][i];
- }
- return dp[j][i] = calc(j-1, i-2) + calc(j+1, i-2) + calc(j+2, i-1) + calc( j-2, i-1);
- // + calc(i+2, j +1) + calc(i+2, j -1) + calc(i+1, j -2) + calc(i+2, j + 1);
- }
- int main(){
- cin >> n >> m;
- // n = readInt();
- // m = readInt();
- dp.resize(m+1, vector<int>(n+1, -1));
- int res = calc(m,n);
- // writeInt(res);
- cout << res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement