约瑟夫环问题(数组解法)

问题描述:一共m个人围成一个圈,并编号1~m,从第一个人开始叫号,从1开始叫起,每叫到n的人出局,然后继续往后叫,直到只剩下一个人。

思路:首先用一个长度为m+1的一维数组a[m+1]记录,索引代表每个人的编号,数组的初始元素均为0,表示该编号的人未出局,当该人出局时将其元素改为1 。然后确定游戏结束的条件,即当出局的人达到 m-1的时候游戏结束。因此我们用一个变量count来记录出局的人,同时我们应该用一个变量i来记录此时轮到哪个人,当i为m+1时应将其调整为1,例如十个人的圈,当轮到第十一个人时其实就是轮到第1个人,还要用一个变量flag来记录此时应该喊哪一个数,并且、只有当a[i] 等于0的时候flag才自增,还有一个注意的点是当flag 等于 n的时候我们要将此时的a[i] 赋值为1,表示该人出局,并且将flag重新赋值为1 。

代码实现如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值