算法1
(递推)
dp(n, m)
表示n
个人, m
为号的最后结果;
每次删除一个人后重新编号
那么 dp(n, m) = dp(n - 1, m) + m
因为此时0
的位置是原来m
的位置
C++ 代码
class Solution {
public:
int lastRemaining(int n, int m){
if (n == 1) return 0;
return (lastRemaining(n - 1, m) + m) % n;
}
};