这是我在测试中遇到的一个问题,我不知道如何回答它,所以我将此转发给你们:
求多项式时间算法这个问题:
你得到一个N正整数(具有固定范围),一个起始位置(0到N-1之间的数字)和一个固定圈数的数组。
在每个回合中,人们可以决定是否采用数组[他现在站在哪里]并将其添加到一个总和(然后你需要记住这个单元格是空的),或者跳过,然后向左或向右。
您需要找到我们可以获得的最大金额。 例如:
array = {70,3,100}
STARTING_POSITION = 2
TURNS = 4
输出:170
转1 - 取100,转2 - 向左移动,转3 - 向左移动,转4 - 取70.
我考虑过动态编程,但我不知道如何处理我已经采用过的细胞 - 这种方法对整个表的影响。