标签:一张 stl int 翻开 push front 扑克 刷题 dq
题面:
有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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。