约瑟夫问题与变形

博客探讨了经典的约瑟夫问题及其变形。在原始问题中,n个人围成一圈,按照固定步长k淘汰,求最后剩下的人的编号。通过递推公式F[i]=(F[i-1]+k) mod i解决。变形问题中,计数步长变化,每次淘汰数到k的人,求解最后留下的编号。解决变形问题使用F[i,j]表示间隔j的人被删除的情况,递推公式为F[i,j]=(F[i-1,j+1]+j) mod i,最终求解F[n,1]。" 120263813,10349943,QCC3024 蓝牙补丁:解决底噪与电流消耗问题,"['蓝牙技术', '芯片优化', '软件补丁', '电源管理']
摘要由CSDN通过智能技术生成

   1.约瑟夫问题:n个人编号为0...n-1.围成一个圈。从编号为0的人开始顺时针计数,每数到k个人时让其出局(第一次出局的是编号为(k-1)mod n的人),接着又从下一个人开始计数。经过n-1轮报数后,求最终留下的人的编号。

     我们只关心最后一个留下的人,比如,当删除第一个人后,也就是删除编号为(k-1)mod n的人,此时我们要求的人就是剩下n-1个人中最后留下的那个人。用F[i]表示有 i 个人围成的圈中最后剩下的人的编号,当删除第 1 个人后,我们将原序列重新编号,从原来编号为 k 的开始一次编号 0...i-2,根据原问题的定义,此时F[i-1] 表示剩下的 i-1 个人最后顺下的那个人的编号。那么F[i-1]与F[i]的号码相差一个 k ,注意得取模。于是得到递推式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值