but our instructor added a new requirement that our algorithm must not be dependent on D. This recurrence seems like it would produce an O(nD) running time if implemented with dynamic programming.
I can't figure out how to reduce its running time from O(nD) to O(nk). To me it seems like it's a variation on the knapsack problem with all values equal to 1. In which case it seems like this is the best that can be done.
If I'm doing something wrong could someone point me in the right direction, or if I've done everything right so far, could someone at least give me a hint as to how I can make an O(nk) recurrence or algorithm.