约瑟夫环问题

转载:约瑟夫环——公式法(递推公式)

约瑟夫环

规则

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

公式

f ( N , M ) = ( f ( N − 1 , M ) + M ) f(N,M)=(f(N−1,M)+M)%N f(N,M)=(f(N1,M)+M)

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

推导

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

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

  • f ( 1 , 3 ) f(1,3) f(1,3):只有1个人了,那个人就是获胜者,他的下标位置是0
  • f ( 2 , 3 ) = ( f ( 1 , 3 ) + 3 ) % 2 = 3 % 2 = 1 f(2,3)=(f(1,3)+3)\%2=3\%2=1 f(2,3)=(f(1,3)+3)%2=3%2=1:在有2个人的时候,胜利者的下标位置为1
  • f ( 3 , 3 ) = ( f ( 2 , 3 ) + 3 ) % 3 = 4 % 3 = 1 f(3,3)=(f(2,3)+3)\%3=4\%3=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 f(4,3)=(f(3,3)+3)\%4=4\%4=0 f(4,3)=(f(3,3)+3)%4=4%4=0:在有4个人的时候,胜利者的下标位置为0
  • f ( 11 , 3 ) = 6 f(11,3)=6 f(11,3)=6

题目

  1. 【220102】390. 消除游戏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值