本文共 1275 字,大约阅读时间需要 4 分钟。
为了生成John的幸运观众列表,我们可以采用以下策略:
读取输入数据:首先,读取N、step和first的值,然后读取每个粉丝的名字存入向量followers
。
初始化结构:使用vector来存储粉丝名字,并使用map来记录每个粉丝被抽中的次数,以避免重复抽选。
抽奖循环:从指定的起始位置开始,每隔step
个单位抽取一个粉丝。如果已经被抽中过,无需再次抽选,继续到下一个位置。
更新结果:每次抽到一个新的粉丝时,将名字添加入winners
向量,并将其计数加一,以便下一次抽取时跳过。
处理结果:最后输出所有幸运观众的名字,或提示如果没有人中奖。
以下是优化后的代码:
#include #include #include
知识点总结:
- set和unordered_set:set按字典序排列,unordered_set元素存储位置随机,无法保证顺序。
- reverse()函数:用于逆转向量。
- 效率选择:使用向量存储粉丝,通过常见结构(如map)记录抽奖次数,确保高效且避免重复抽选,不影响查询和修改性能。
转载地址:http://cgjwk.baihongyu.com/