其他分享
首页 > 其他分享> > 【刷题】【stl】扑克游戏

【刷题】【stl】扑克游戏

作者:互联网

题面:

  有n张扑克牌,记为1 2 …… n,按照一定 的规律排放后,可以使翻开的第一张牌是 1,然后把下面一张牌放到整副牌的末尾, 再翻下一张刚好是2,再把后一张牌放到 整副牌的末尾,下面一张是3……如此继 续下去,直到最后一张牌n翻出。试编程 解决这个问题。

【输入说明】

  一个正整数n( 1 <= n <= 1000 )。

【输出说明】

  一行,n个空格隔开的整数,表示n张牌的 正确排列顺序。

样例输入     样例输出

5       1 5 2 4 3

 

【题解加代码】

#include<bits/stdc++.h>
using namespace std;

int m;
deque <int > dq;

int main()
{
    cin>>m;
    //倒序放入所有牌,所以最后一张是m 
    dq.push_front(m);
    //顺序操作:翻开新的头部的牌,然后将下一张放到尾部,然后翻开最上面的m 
    //所以逆序就应该是,已经翻开了m,先把尾部的牌放到头部,然后翻开头部的m- 
    for(int i=m-1;i>=1;i--)
    {
        dq.push_front(dq.back());
        dq.pop_back();
        dq.push_front(i); 
    }
    for(int i=0;i<dq.size();i++)
        cout<<dq[i]<<" "; 
    
    return 0;
} 

 

标签:一张,stl,int,翻开,push,front,扑克,刷题,dq
来源: https://www.cnblogs.com/xwww666666/p/15893716.html