There are many different general strategies when designing algorithms for a problem like divide and conquer, greedy, dynamic programming, etc. I understand that it is not always obvious which to use for a problem. However, I am at a complete loss as to how to even begin to make educated guesses. I assume intuition plays a huge part in this, but is there a reasonably concise summary anywhere of characteristics of problems that make them suitable for certain algorithm strategies?
I am having trouble parsing the many often super verbose and lengthy books on the subject.
Thanks in advance!