[dynamic-programming] What is the difference between bottom-up and top-down?