您的位置:首页 > 其它

UVA10935纸牌问题

2017-07-09 11:07 211 查看

纸牌问题

问题描述



解题思路

在用队列来模拟操作,当牌大于或等于两张,输出对首,队首出队,将新的队首的值压入队尾,队首出队。如此往复。直至只剩一个牌。

注意

这里的输出格式甚是诡异,一定要注意,一定要完全按照它的要求来

代码如下:

#include<iostream>
#include<queue>
using namespace std;
int main()
{
int n;
while(cin>>n&&n)
{
queue<int>q;
for(int i=1;i<=n;i++)
q.push(i);
cout<<"Discarded cards:";
while(!q.empty())
{
if(q.size()>2){
cout<<" "<<q.front()<<",";
q.pop();
q.push(q.front());
q.pop();
}
else if(q.size()==2){
cout<<" "<<q.front();
q.pop();
q.push(q.front());
q.pop();
}
else if(q.size()==1)
break;
}
cout<<endl;
cout<<"Remaining card: "<<q.front()<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: