用C++Vector和Queue解决循环报数淘汰问题

本文介绍了如何使用C++中的Vector和Queue数据结构解决一个循环报数淘汰问题。当人数从100开始按1到M的顺序报数,报到M的人出局,直到剩下不足M个人。例如,当M=3时,最后剩下的人的编码为58和91;当M=4时,剩下的是34和45。通过将首位元素移到末尾并删除报数位置的元素,可以实现这一过程。
摘要由CSDN通过智能技术生成

问题:

100人围成一个圈,每人有一个编码,编码从1到100。他们开始从1开始依次报数,报到M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人小于M。输出剩下的人原先的号码,M=3时为:58,91,M=4时为34,45,97.

分析:将首位放进Vector的末尾,然后删除首位,当达到报数那一位的时候直接删除首位,不再放进末尾。queue的编程思路相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值