什么是约瑟夫环?
约瑟夫环(约瑟夫问题)是一个数学的应用问题,又称“丢手绢问题”
已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。
从编号为k的人开始报数,数到m的那个人出列;
他的下一个人又从1开始报数,数到m的那个人又出列;
依此规律重复下去,直到圆桌周围的人全部出列。
通常解决这类问题时我们把编号从0~n-1,最后 结果+1即为原问题的解。
如何求得最后一个出列的人的编号?
方法一 映射
核心 将第一次出列之后的环进行映射,使得第一次与其余出列的次数的编号一一致
从而得到递推公式
递推公式推导
循环版本(java实现)
public static int LastRemaining_Sol1(int n, int m) {
if(n == 0 || m <= 0) {