定义状态:设 f(n, k) 表示:n个人、报数到 k 时出圈,最后的幸存者编号(为了后边好计算,从0开始编号,最后结果加1即可)。
显然,当n为1时,幸存者编号为0。
当n>1时,考虑淘汰一人
n个人编号为:0~(n-1),报k(编号k-1)出圈,下个人(编号k)从0开始继续报数。
问题规模缩减到 f(n-1,k),n-1个人,报数到 k 出圈的约瑟夫环问题
新环和原环编号对应:
新环编号:0、1、2、...、(n-2)
原环编号:k%n、(k+1)%n、(k+2)%n、....、(k+(n-2))%n
问题 f(n-1,k)求解结果为新环编号,对应原环编号为(f(n-1,k)+k)%n