题目信息
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
题解
这个题目比较经典,也被成为约瑟夫环问题,有兴趣的朋友可以去搜搜约瑟夫环。
做一个简单的示例,取10个人来报数,然后退出

从上面的示例,可以看出:
- 定义初始数组,数组位置初始值为0
- 报数器只在值为0的位置报数
- 报数器报到3时,修改位置值为1,剩余人数减1
- 循环报数,在剩余人数为1时退出
- 数组循环至末尾时,数组位置置0
- 如果循环到的位置值不为0,位置加1后移
- 循环退出时,打印数组,输出值为0的位置
编码
数组实现
根据上面的题解分析,利用数组来实现该算法
/**
* 报数退出
* @param m 总人数
* @param n 报到n