Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int MX = 2e5+6;
- int dp[33][33][33];
- int solve(int rem1,int rem2,int rem3)
- {
- if(rem1<0||rem2<0||rem3<0)return 0;
- if(rem1==0&&rem2==0&&rem3==0)return 1;
- if(dp[rem1][rem2][rem3]!=-1)return dp[rem1][rem2][rem3];
- int ans=0;
- ans+=solve(rem1-2,rem2-2,rem3-2);
- if(rem2==rem1){
- if(rem3>=rem1)
- ans+=solve(rem1-1,rem2-1,rem3-2);
- else ans+=solve(rem1-1,rem2-1,rem3);
- }
- if(rem2==rem3){
- if(rem1>=rem2)
- ans+=solve(rem1-2,rem2-1,rem3-1);
- else ans+=solve(rem1,rem2-1,rem3-1);
- }
- // cout<<rem1<<' '<<rem2<<' '<<rem3<<endl;
- return dp[rem1][rem2][rem3]=ans;
- }
- int main()
- {
- int n;
- memset(dp, -1, sizeof dp);
- while (true)
- {
- cin >> n;
- if (n == -1)break;
- cout <<solve(n,n,n)<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement