admin 发表于 2020-12-27 22:08:12

信息学奥赛赛题瑟夫(Josephu)问题

   约瑟夫问题:N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人开始报数,数到M的人出圈;…输出依次出圈的人的编号。N,M由键盘输入。

  【分析】 (1)由于对于每个人只有出局和未出局两种状态,因此可以用布尔型标志数组存储游戏过程中每个人的状态。不妨用1表示出局,0 表示没有出局。

            (2)开始的时候,给标记数组赋初值为0,即全部未出局。

      (3)模拟报数游戏的过程,直到所有的人出局为止。

admin 发表于 2020-12-27 22:09:10

这是一个在算法设计上很有名气的经典约瑟夫(Josephu)问题,它有很多变例。如NOIP2016的猴子选大王、NOIP2014的持密码报数、NOIP2017狐狸追兔子等。

页: [1]
查看完整版本: 信息学奥赛赛题瑟夫(Josephu)问题