寻找最小角度程序设计思路,求大神
本帖最后由 ming月 于 2017-8-31 16:33 编辑如图,中间1、2、3、4、5、6、7、8是每个格子,格子都有唯一标号,圆的中心是个轴承,可以旋转。旋转到哪个格子的时候,门打开就可以取出其中的货物。比如,我要打开4号,我就顺时针方向旋转135度,把4号转过来然后开门。如果是7号格子我就逆时针旋转90度。
问题是,如果旋转了之后我就停在当前位置,下一次该怎么查找到最小的角度呢,如果是6号7号8号格子呢?如果有n个格子呢?
有没有什么算法?
算角度啊,既然知道有n个格子了,就能算出来每个格子的角度,算一下当前格子和需要打开格子之间的角度,判断下顺时针还是逆时针旋转就好了 对于n个格子,假设当前门的位置在x号格子,下一次要移到y号格子
(1)y>x,即从小号码格子移到大号码格子时,则需要旋转的角度就是(y-x)*360/n,如果计算结果小于180°,则就按照格子号码从小到大的方向旋转该角度,如果计算结果大于180°,则就按照格子号码从大到小的方向旋转(360°-该角度),如果计算结果等于180°,则无论往哪个方向都是旋转180°.
(2)x>y,即从大号码格子移到小号码格子时,则需要旋转的角度就是(x-y)*360/n,如果计算结果小于180°,则就按照格子号码从大到小的方向旋转该角度,如果计算结果大于180°,则就按照格子号码从小到大的方向旋转(360°-该角度),如果计算结果等于180°,则无论往哪个方向都是旋转180°.
页:
[1]