algorithm algorithm study Dynamic Programming Bruce Force Breath First Search Depth First Search Greedy Simulation