简单的报数游戏(只是记录一下写蓝桥杯题目的过程)。。。

这篇博客探讨了如何利用队列数据结构解决一种报数游戏的算法问题。当报到特定数字时,该数字出队,否则重新入队形成环形结构。代码示例展示了当队列只剩一个元素时的处理逻辑,强调了队列在解决此类问题中的关键作用。
摘要由CSDN通过智能技术生成

关于题目:

报数游戏的题目无非就是,报到多少就停止报数又从1开始报数,而报到特定的数字就出队,。。最后一般就是问最后的队列情况。。

套路

这种题目肯定是离不开队列这个数据结构的,为了维持一个报数的环境,那么每次的队列头部肯定都得是那个报数的对象,这样才能确保能让特定数字人能够出队,所以每次要是不出队,就需要把队首的元素重新入队到队尾,这样就相当于形成了环形结构。。所以如果报数题目中不是环形结构(或者间接环形)那么请不要使用队列,用最基本的数组就能实现。。。

代码:

m代表出队的数字,而 j 则是用于记录报数的。这一段代码是当队只剩下一个元素时输出,其余的情况可以根据这个结构灵活应变。

queue<int> q;
    int n;
    cin >> n;
    for(int i = 1;i<=n;i++){
        q.push(i);
    }
    for(int j = 1;q.size()!=1;j=(j+1)%m){
        if(j){
            q.push(q.front());
        }
        q.pop();
    }
    cout<<q.front();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值