试图找到算法或算数学?

时间:2014-09-20 10:38:55

标签: arrays algorithm math

采取下面的路径示例,它有7个路径,我创建一个7的数组来保存每个路径的值,数组的初始值如下:

  

[1,2,3,4,5,6,7](见图:开始路径下的顶行数组值)

如果用户随机选择路径5,即数组索引[4],返回的值将为5 ..到目前为止一直很好。

现在它有点混乱,因为用户选择了路径5.我需要更改下一个随机选择的数组值,我总是需要当前选择的路径(在本例中为5)现在有一个数组值为1并向右计数并向上计数,数组值现在应该如下所示

  

[5,4,3,2,1,2,3]

如果您查看路径示例图片并按照每个步骤进行操作,您将看到在红色框突出显示所选路径的路径下的数组值中发生这种情况,希望更清楚,并且问题是,是否存在能做到这一点的算法?

Pathway Example 2

1 个答案:

答案 0 :(得分:2)

每个阵列单元格包含您选择的单元格的距离加一,是吗?如果是这样,您只需使用for语句解决:

for each index of array:
    array[index] = abs(index - selectedIndex)+1

其中selectedIndex是被选中的索引,abs(...)是模数函数。

您的圆形阵列解决方案更快,因为您只需要显示数字,并且您可以仅根据selectedIndex和之前的限制计算新限制。该解决方案提供的内存成本更低。