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;

结果为:

猜你喜欢

转载自blog.csdn.net/weixin_41556394/article/details/81203438