Algorithm Design By Dynamic Programming Tutorial