N个人,依次报数,数到3的剔除,继续从1开始报数。。。。。。剩下的最后一个人编号是多少
可以用到队列的知识,进行循环计数:i(计数总数)%N(队列长度)。
然后使用循环进行报数,限制条件是4(假设报到3回头)。
接着要挑选出满足条件的,即报到3的人。可以用if语句。
如何标记,可以用赋值为0的人代表报到3的人。
循环时如何区分,每次循环都要判断这个人的值是否为0,为0则跳过(不进行报数赋值)。
还有很重要的一点,如何找出最后一个人,可以用flag的方式,每次将报到3的人赋值为0时,flag++,当flag==N就可以输出此时的i
所以i 与flag应当是同时出现的。
另外,由于采用数组,要区分下标 i-1 与实际编号 i 。
具体实现代码如下:
这里取N为10;
结果为: