zoukankan      html  css  js  c++  java
  • 【队列】飞盘游戏

    Description

    杰克是美国某小镇有名的飞盘高手。他掷飞盘的时候有一个习惯,在一叠飞盘中,从第一个飞盘(即位于顶端的飞盘)开始,从上往下依次编号为1,2,...,N。当至少还有两个飞盘的时候,杰克通常会掷出一个飞盘,然后把新的第一个飞盘放到所有飞盘的最后。输入N,输出每次扔掉的飞盘,以及最后剩下的飞盘。

    Input
    第一行为一个整数T(0<T<20),表示测试用例个数。
    以下T行每行包含一个整数N(0<N<40),为一个测试用例的飞碟数。
    Output

    为每个测试用例单独输出一行,该行中依次输出每次掷出的飞盘编号以及最后剩下飞盘,每个飞盘后跟着一个空格。

    Sample Input
    2
    7
    4
    Sample Output
    1 3 5 7 4 2 6
    1 3 2 4

    Problem Source: 课程上机练习题

    解题思路:

    用队列来模拟实际情况

    实现代码:

    #include<iostream>
    #include<queue>
    using std::cout;
    using std::cin;
    using std::endl;
    using std::queue;
    
    int main() {
        int T, n, tmp;
        queue<int> q;
        cin >> T;
        for (; T > 0; T--) {//T个测例 
            cin >> n;
            for (int i = 0; i < n; i++) {//初始化栈,依次编号 
                q.push(i + 1);
            }
            
            for (int i = 0; q.size() > 2; ) {
                cout << q.front() << " "; //扔出飞盘,出栈队 
                q.pop();
                q.push(q.front());        //下一个放到队尾 
                q.pop();
            }
            
            if (q.size() == 2) {         //只剩两个飞盘时,直接依次输出 
               cout << q.front() << " ";
               q.pop();
            }
            cout <<  q.front() << " ";
            q.pop();
            cout << endl; 
        }
    }                                 

     (本博文或多或少参考过其他网上资料,但时间已久忘记当初的参考了,在此对他们表示感谢!)

    越努力越幸运~
  • 相关阅读:
    js 获取表单和页面控件数据
    vue axios upload 多个文件
    vue antd axios 使用
    antd vue 修改modal弹窗样式
    线性回归的改进-岭回归
    线性回归
    00
    集成学习方法之随机森林
    决策树
    第十讲 让机器像人类一样学习--强化学习-----学习总结
  • 原文地址:https://www.cnblogs.com/zengyh-1900/p/4064182.html
Copyright © 2011-2022 走看看