Advertisement
jeff69

Untitled

Jan 23rd, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MX = 2e5+6;
  4. int dp[33][33][33];
  5. int solve(int rem1,int rem2,int rem3)
  6. {
  7.     if(rem1<0||rem2<0||rem3<0)return 0;
  8.     if(rem1==0&&rem2==0&&rem3==0)return 1;
  9.     if(dp[rem1][rem2][rem3]!=-1)return dp[rem1][rem2][rem3];
  10.     int ans=0;
  11.         ans+=solve(rem1-2,rem2-2,rem3-2);
  12.     if(rem2==rem1){
  13.            if(rem3>=rem1)
  14.             ans+=solve(rem1-1,rem2-1,rem3-2);
  15.     else ans+=solve(rem1-1,rem2-1,rem3);
  16.     }
  17.     if(rem2==rem3){
  18.  
  19.             if(rem1>=rem2)
  20.             ans+=solve(rem1-2,rem2-1,rem3-1);
  21.             else ans+=solve(rem1,rem2-1,rem3-1);
  22.  
  23.     }
  24.    // cout<<rem1<<' '<<rem2<<' '<<rem3<<endl;
  25.     return dp[rem1][rem2][rem3]=ans;
  26. }
  27. int main()
  28. {
  29.     int n;
  30.     memset(dp, -1, sizeof dp);
  31.    while (true)
  32.     {
  33.  
  34.  
  35.         cin >> n;
  36.  
  37.         if (n == -1)break;
  38.         cout <<solve(n,n,n)<<endl;
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement