Dinamično programiranje in problem nahrbtnika