• 构造队列


    小明同学把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;
    }
    

      

    拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
  • 相关阅读:
    03、CPU主频,和性能
    02、计算机组成原理相关知识
    常用正则表达式,手机号、固话号、身份证号等
    01、计算机原理结构,及冯诺依曼体系结构
    7-7 Complete Binary Search Tree (30分) 完全二叉搜索树
    7-2 Reversing Linked List (25分)
    7-1 Maximum Subsequence Sum (25分)
    6-17 Shortest Path [4] (25分)
    6-16 Shortest Path [3] (25分)
    6-15 Iterative Mergesort (25分)
  • 原文地址:https://www.cnblogs.com/dd2hm/p/7346869.html
Copyright © 2020-2023  润新知