0
点赞
收藏
分享

微信扫一扫

约瑟夫环问题

王远洋 2022-02-28 阅读 102
leetcode

约瑟夫环

规则

N个人围成一圈,从1开始报数,杀掉报到M的人。下一个人接着从1开始报数。

公式

f(N,M)=(f(N-1,M)+M)%N

  • f(N,M)表示,N个人报数,每报到M时杀掉那个人,最终胜利者的编号
  • f(N-1,M)表示,N-1个人报数,每报到M时杀掉那个人,最终胜利者的编号

推导

上一次:从下标0开始报数。下标0喊1,下标(M-1)喊M淘汰,从下标M重新开始。

下一次:下标M成为下标0。

举例:11个人排成一排,假设每报到3的人被杀掉。

  • f(1,3):只有1个人了,那个人就是获胜者,他的下标位置是0
  • f(2,3)=(f(1,3)+3)%2=3%2=1:在有2个人的时候,胜利者的下标位置为1
  • f(3,3)=(f(2,3)+3)%3=4%3=1:在有3个人的时候,胜利者的下标位置为1
  • f(4,3)=(f(3,3)+3)%4=4%4=0:在有4个人的时候,胜利者的下标位置为0
  • ......
  • f(11,3)=6
举报

相关推荐

0 条评论