Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 位置搜索算法_Algorithm_Language Agnostic - Fatal编程技术网

Algorithm 位置搜索算法

Algorithm 位置搜索算法,algorithm,language-agnostic,Algorithm,Language Agnostic,我希望能够将鼓定位在某个特定的位置,但以游乐场的摩天轮为例可能会更好。我确定这个搜索方法有名字 一个装有100把椅子的摩天轮正在旋转,它随机停下来,90号椅子在底部,所有乘客都下车。现在,如果我想把10号椅子放在地上,这样坐在10号椅子上的乘客就可以下车,有没有一种算法可以帮助我计算到10号椅子的最短距离,以最少的次数将摩天轮旋转到10号椅子上?假设椅子是顺时针编号的,N是椅子的数量(100) 另外,让stopped为车轮停止的椅子编号 desired是您想要到达的椅子的号码 因此,算法如下所示

我希望能够将鼓定位在某个特定的位置,但以游乐场的摩天轮为例可能会更好。我确定这个搜索方法有名字


一个装有100把椅子的摩天轮正在旋转,它随机停下来,90号椅子在底部,所有乘客都下车。现在,如果我想把10号椅子放在地上,这样坐在10号椅子上的乘客就可以下车,有没有一种算法可以帮助我计算到10号椅子的最短距离,以最少的次数将摩天轮旋转到10号椅子上?

假设椅子是顺时针编号的,
N
是椅子的数量(100

另外,让
stopped
为车轮停止的椅子编号

desired
是您想要到达的椅子的号码

因此,算法如下所示:

int distClockwise = desired - stopped;
if(distClockwise < 0) {
    distClockwise += N;
}

int distCounterClockwise = N - distClockwise;

if(distClockwise < distCounterClockwise) {
    //spin the wheel clockwise
}
else {
    //spin the wheel counterclockwise   
}
int dist顺时针=所需-停止;
如果(顺时针方向<0){
顺时针方向+=N;
}
int dist逆时针=N-dist顺时针;
if(顺时针方向<逆时针方向){
//顺时针转动轮子
}
否则{
//逆时针转动车轮
}

最短距离是什么意思?方向正确吗?这只是一个方向!是nt吗?请提供有关所用数据结构的更多详细信息。给我们一个示例输入和此算法所需的输出听起来像是一个类似的问题:[编辑]或:此代码几乎记录了它本身,但让我们痛苦地说清楚:这里的想法是计算两个方向需要多远才能到达想要的椅子,然后选择最短的方向。谢谢大家的评论和链接。GoogleHireMe,你的正确答案,正如Kaganar所写,“这里的想法是计算两个方向到达所需椅子所需的距离,然后选择最短的方向”。正如它所写的,你的代码不会适用于所有可能的位置,它似乎能得到正确的距离(它需要移动多少张椅子),但不能得到方向。有人计算出了所有组合的数学方程吗?我在那里,但很挣扎。@martin这是正确的,Kaganar没有说任何不正确的地方-他只是在我的答案中添加了一些细节(由于变量名的原因,这些细节很明显)。@martin,如果你知道(用上面的等式计算)这一点的话(要顺时针移动以到达我们想要的目的地的椅子数量)大于逆时针方向的距离(
dist逆时针
,在上面的代码中),那么,显然,你应该逆时针旋转轮子,反之亦然。