➤ 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!!