剑指Offer 孩子们的游戏(圆圈中最后剩下的数)

 剑指Offer 孩子们的游戏(圆圈中最后剩下的数)

剑指Offer 孩子们的游戏(圆圈中最后剩下的数)

代码如下,也可采用递归实现。 

class Solution {
public:
    //约瑟夫问题
//f(n, m) = 0  n=1
//        = [f(n-1, m) + m] % n  n>1
    int LastRemaining_Solution(int n, int m)
    {
       if(n == 0) return -1;
       int s = 0;
       for(int i = 2; i <= n; i++)
           s = (s + m) % i;
       return s;
    };
};
剑指Offer 孩子们的游戏(圆圈中最后剩下的数)