我无法破解这个算法

时间:2016-06-03 12:28:03

标签: algorithm

我刚刚从HackerEarth那里练习了一些问题。我尝试了这个问题但却无法抓住逻辑。根据标签,这包括动态编程递归。

有人能弄清楚如何回答这个问题并向我解释一下吗?

https://www.hackerearth.com/problem/algorithm/avoid-boredom/

1 个答案:

答案 0 :(得分:0)

基本动态编程。因为要求你保留初始订单。

V[x,y]是您已经选择了y个科目而最后一个是x的最大总和。

显然V[x,1] = 0适用于所有x(选择单个主题并不能为您提供任何总和。

V[x,y] = max_a(V[a,y-1] + abs(A[a] - A[x]), for a in y-1, x-1这适用于你在他们面前寻找最佳选择的所有其他人。

解决方案是max_x(V[x, M])

为了实现你只需要确保你没有选择一些无效的单元格(V [0,3]应该是无效的,如果最后一个是0则你不能选择3个项目。)