Dynamic Programming vs. Divide-and-Conquer (2018)
i&#x27;m late to the comments but hopefully this helps someone:<p>i struggled with DP as much as anyone. i read all of the standard resources (CLRS, vazirani, kleinberg, etc), watch all the youtube videos, did all of the practice problems <i>in the books</i>, and still couldn&#x27;t solve the kinds that are asked on interviews. i even went as far as emailing kleinberg for help.<p>what made it basically unconsciously fluent for me (i.e. i can read a problem statement and sketch out the recursion and subproblems in about 60s and then just perform fixup) was doing hordes of them on leetcode in preparation for a FB interview. it got to the point where i could solve hard ones in about 5 minutes using either bottom-up or top-down (i.e. memoization). so if you&#x27;re struggling with DP for interviews my suggestion (which is basically the standard suggestion) is to just grind the problems on leetcode.<p>and contrary to popular belief they do come up outside of interviews -  i had to solve a circuit synthesis problem last week and it turned out to be basically DP substring counting problem. took me all of 5 minutes.