牛寻找长围栏缝隙的算法
我正在考虑这个挑战:
一头名叫山姆的短视奶牛在它目前的牧场上找不到足够的草。它记得牧场的围栏有一个缺口。不幸的是,栅栏很长:绕一圈,山姆沿着栅栏走需要几步。山姆只有在它就在它旁边时才能看到它(记住奶牛是近视的)。
在这个问题中,您将设计不同的算法,使 Sam 能够找到与当前位置相距几步之遥的差距。Sam 总是位于栅栏旁边。我们称其为起始位置原点。您可能会认为 远大于 。设计一个需要 O() 时间效率的算法来找到差距并证明其效率确实是 O()。你不需要用伪代码编写算法(如果你愿意,你可以),但你必须清楚地描述算法。未知。山姆只能沿着栅栏走。
我想不出任何方法来解决这个问题,因为它是未知的,而且时间复杂度似乎总是与而不是 .
回答
顺时针走1步
逆时针走2步
顺时针走4步...
每次你改变方向时,你都会覆盖你已经看到的相同区域,再加上整个区域,所以平均有一半的时间花在检查围栏的一个新部分上,在交替的两侧。
您将在大约 4k 步内到达差距。