➤ Problem Link : GNY07H
👉 Hint : Simple 2D DP
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
int t;
cin>>t;
ll dp[1001][16];
for(int k=1;k<=t;k++)
{
int n;
cin>>n;
for(int i=0;i<16;i++)
{
dp[0][i]=0;
dp[1][i]=0;
}
dp[1][15]=1;
dp[1][6]=1;
dp[1][3]=1;
dp[1][12]=1;
dp[0][15]=1;
for(int i=2;i<=n;i++)
{
dp[i][15]=dp[i-1][15]+dp[i-2][15]+dp[i-1][12]+dp[i-1][6]+dp[i-1][3];
dp[i][6]=dp[i-1][15]+dp[i-1][9];
dp[i][9]=dp[i-1][6];
dp[i][3]=dp[i-1][15]+dp[i-1][12];
dp[i][12]=dp[i-1][15]+dp[i-1][3];
}
cout<<k<<" "<<dp[n][15]<<"\n";
}
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
