本文主要是介绍关于猴子选大王(约瑟夫)问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
摘至本人有道云笔记《关于猴子选大王(约瑟夫)问题》
有m个猴子围成一圈,按顺时针编号,分别为1到m。现打算从中选出一个大王。经过协商,决定选大王的规则如下:从第一个开始顺时针报数,报到n的猴子出圈,紧接着从下一个又从1顺时针循环报数,...,如此下去,最后剩下来的就是大王。
看完这道题,首先想到的是列表,而且这个列表是首尾相接不断循环。针对此问题切入
设置一个列表存储猴子 a=[1,1,1,1,1,1 ] 所有猴子(未被踢出去的猴子)的初始值为1,设置计数count,如果count满足==n,就将该位置上的猴子置为0(表示该猴子被踢出去),count置为0,猴子总数减1。
当下标值==列表长度时,说明已经到列表末尾,将index置为0,从列表首部继续。
直到最后值为1(未被踢出)的猴子为大王。
代码如下:
这篇关于关于猴子选大王(约瑟夫)问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!