关于猴子选大王(约瑟夫)问题

摘至本人有道云笔记《关于猴子选大王(约瑟夫)问题》

有m个猴子围成一圈,按顺时针编号,分别为1到m。现打算从中选出一个大王。经过协商,决定选大王的规则如下:从第一个开始顺时针报数,报到n的猴子出圈,紧接着从下一个又从1顺时针循环报数,...,如此下去,最后剩下来的就是大王。

 

看完这道题,首先想到的是列表,而且这个列表是首尾相接不断循环。针对此问题切入

设置一个列表存储猴子 a=[1,1,1,1,1,1 ] 所有猴子(未被踢出去的猴子)的初始值为1,设置计数count,如果count满足==n,就将该位置上的猴子置为0(表示该猴子被踢出去),count置为0,猴子总数减1。

当下标值==列表长度时,说明已经到列表末尾,将index置为0,从列表首部继续。

直到最后值为1(未被踢出)的猴子为大王。

代码如下:

关于猴子选大王(约瑟夫)问题_第1张图片

你可能感兴趣的:(Python,学习笔记,算法)