C++关于约瑟夫环的队列做法

135 阅读1分钟

问题描述(来自百度):

约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依次规律重复下去,直到圆桌周围的人全部出列。

这里就只实现求出最后剩下的那个人的编号

有关代码及详细注释:

用队列实现约瑟夫环最主要的一个步骤是每次报数如果还没有报到指定的数m都要让队首元素插入到队尾,这样不仅可以维持之后报数的顺序,同时保证当报到m的人就是在队首,方便出队