猴子选大王(约瑟夫环问题)
算法描述:m只猴子围坐成一个圈,按顺时针方向从1到m编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到n的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。
算法实现:
def king(m,n):
last = 0
for i in range(2,m + 1):
last = (last + n) % i
return last + 1
print(king(10,3))
Result:
4