在圆中找到理想起始点的算法

时间:2016-11-13 01:49:45

标签: arrays algorithm dynamic-programming

所以我一直在争论的问题是:

您将获得一个代表圆圈的整数数组。然后,你必须在圆圈中选择点开始。从您开始的位置,您将数组中的值与您到达那里的步数进行比较,如果步数小于或等于数字,请将其包含在最终集合中。找到要开始的地方,以便您拥有最多的元素。

ex, a=[0, 1, 2]

If you start at index=0, then:
a[0]=0 < =0 so 0 is included
a[1]=1 < =1 so 1 is included
a[2]=2 < =2 so 2 is included

final set: {0,1,2}


If you start at index=1, then:
a[1]=1 > 0 so 1 is NOT included
a[2]=2 > 1 so 2 is NOT included here we loop back around
a[0]=0 > 2 so 0 is included

final set: {0}

If you start at index=2, then:
a[2]=2 > 0 so 2 is NOT included, here we loop back around
a[0]=0 < = 1 so 0 is included 
a[1]=1 < = 2 so 1 is included

final set: {0,1}

所以在这个简单的情况下,起始位置索引= 0是最佳位置,因为它导致具有最多元素的最终集合。现在发现这种情况的蛮力方法是显而易见的,但我试图找到一种更有效的方法。到目前为止,我的尝试是检查试图找到为数组中每个元素计算的可行起始范围的最大交叉。此外,我觉得动态编程可以用某种方式来帮助制作解决方案,但我似乎无法确切地确定如何。

1 个答案:

答案 0 :(得分:2)

这是a problem of ongoing contest。在比赛期间要求提供解决方案是非法的,并被视为作弊。

比赛结束后,您可以寻求帮助,提供您已经尝试过的内容。