➤ Problem Link : COINS
👉 Hint : Simple 1D DP
✅ C++ Solution :
#include <bits/stdc++.h> using namespace std; long long int dp[1000007]; long long int solve(long long int n) { if(n == 0) return 0; if(n == 1) return 1; if(n<=100000 && dp[n]!=-1) return dp[n]; long long int res1=solve(n/2)+solve(n/3)+solve(n/4); long long int res2=n; long long int res=max(res1,res2); if(n<=100000) dp[n]=res; return res; } int main() { long long int n; while(scanf("%lld",&n)!=EOF) { memset(dp,-1,sizeof(dp)); long long int res=solve(n); printf("%lld\n",res); } return 0; }
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!!