有n个人围成一圈,顺序排号。从第1人开始报数(从1到3),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。(用指针方法处理)

题意是这样的:有 $n$ 个人围成一圈,顺序排号。从第 $1$ 个人开始报数(从 $1$ 到 $3$),每报到 $3$ 的人就退出圈子,问最后留下的是原来第几号的那位。

你可以用指针的方法来解决这个问题。首先,你需要定义一个指针 $p$,初始指向第 $1$ 个人。然后,你可以用一个循环来模拟这个过程。在每一轮循环中,你可以把 $p$ 向前移动 $1$ 个位置,并检查 $p$ 指向的人是否满足条件(即,报数是否为 $3$)。如果满足条件,你就可以将 $p$ 向前移动 $2$ 个位置,并将这个人标记为“已退出”。否则,你就继续把 $p$ 向前移动 $1$ 个位置,继续检查下一个人。如果 $p$ 到达了圈子的末尾,就把 $p$ 移动到圈子的开头继续检查。

在每一轮循环结束时,你都要检查圈子中还有多少人没有被标记为“已退出”。如果只剩下一个人了,就说明找到了答案。否则,就继续进行下一轮循环。

代码如下:

``` int n; // 圈子中的人

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值