信息学奥赛赛题瑟夫(Josephu)问题
约瑟夫问题:N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人开始报数,数到M的人出圈;…输出依次出圈的人的编号。N,M由键盘输入。【分析】 (1)由于对于每个人只有出局和未出局两种状态,因此可以用布尔型标志数组存储游戏过程中每个人的状态。不妨用1表示出局,0 表示没有出局。
(2)开始的时候,给标记数组赋初值为0,即全部未出局。
(3)模拟报数游戏的过程,直到所有的人出局为止。 这是一个在算法设计上很有名气的经典约瑟夫(Josephu)问题,它有很多变例。如NOIP2016的猴子选大王、NOIP2014的持密码报数、NOIP2017狐狸追兔子等。
页:
[1]