Card 1:
  - Q: What is the difference between "dynamic programming" and "divide and conquer"?
  - A: In divide and conquer, the problems are solved independently. In dynamic programming, the results of these smaller sub-problems are remembered and used for other sub-problems.

Card 2:
  - Q: Where is dynamic programming used?
  - A: It is used where we have problems, which can be divided into similar sub-problems, so that their results can be re-used.

Card 3:
  - Q: What will a dynamic algorithm do before solving the in-hand sub-problem?
  - A: It will try to examine the results of the previously solved sub-problems.

Card 4:
  - Q: How do dynamic algorithms use Memoization?
  - A: To remember the output of already solved sub-problems.

Card 5:
  - Q: what is the difference between greedy and dynamic algorithms?
  - A: Greedy algorithms address local optimization. Dynamic algorithms are motivated by overall optimization.
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence