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