zoukankan      html  css  js  c++  java
  • 构造队列

    小明同学把1到n这n个数字按照一定的顺序放入了一个队列Q中。现在他对队列Q执行了如下程序:

    while(!Q.empty())              //队列不空,执行循环
    {
    int x=Q.front(); //取出当前队头的值x
    Q.pop(); //弹出当前队头
    Q.push(x); //把x放入队尾
    x = Q.front(); //取出这时候队头的值
    printf("%d ",x); //输出x
    Q.pop(); //弹出这时候的队头
    }

    做取出队头的值操作的时候,并不弹出当前队头。
    小明同学发现,这段程序恰好按顺序输出了1,2,3,...,n。现在小明想让你构造出原始的队列,你能做到吗?[注:原题样例第三行5有错,应该为3,以下已修正] 

    输入描述:
    第一行一个整数T(T ≤ 100)表示数据组数,每组数据输入一个数n(1 ≤ n ≤ 100000),输入的所有n之和不超过200000。



    输出描述:
    对于每组数据,输出一行,表示原始的队列。数字之间用一个空格隔开,不要在行末输出多余的空格.
    示例1

    输入

    4
    1
    2
    3
    10

    输出

    1
    2 1
    2 1 3
    8 1 6 2 10 3 7 4 9 5


    #include<iostream>
    #include<vector>
    #include<queue>
    using namespace std;
    int main() {
        int k,n;
        cin>>k;
        int num[10001];
        queue<int> Q;
        while(k--) {
            cin>>n;
            for(int i=1;i<=n;i++)
                Q.push(i);
            int cnt=1;
            while(!Q.empty()) {
                int x=Q.front();
                Q.pop();
                Q.push(x);
                num[Q.front()]=cnt++;
                Q.pop();
            }
            for(int i=1;i<n;i++)
                cout<<num[i]<<" ";
            cout<<num[n]<<endl;
        }
        return 0;
    }
    

      

    #include<iostream>
    #include<deque>
    using namespace std;
    
    int main(){
        int T;
        while(cin>>T){
            for(int t=0;t<T;t++){
                int n;
                cin>>n;
                deque<int> d;
                for(int i=n;i>=1;i--){
                    d.push_front(i);
                    int tmp = d.back();
                    d.pop_back();
                    d.push_front(tmp);
                }
                for(int i=0;i<n;i++){
                    if(i==n-1)
                        cout<<d[i]<<endl;
                    else
                        cout<<d[i]<<' ';
                }
            }
        }
    
        return 0;
    }
    

      

    拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
  • 相关阅读:
    A1049. 命题逻辑
    矩形面积交:输出0.00
    完美的代价
    枚举孪生素数对
    改变参数的两种方法
    二面准备:React、Typescript、其他基础补充
    【TypeScript】基础及问题汇总
    【React】做一个百万答题小项目
    【React】相关题目总结
    【React】半小时深刻理解《半小时深刻理解React》(老套娃了)
  • 原文地址:https://www.cnblogs.com/dd2hm/p/7346869.html
Copyright © 2011-2022 走看看