Identifying Dynamic Programming Problems