算法竞赛 习题5-3 卡片游戏

题目要求:
桌上有n(n<=50)张牌,从第一张牌(位于顶面的牌)开始,从上往下按照1-n的顺序编号,当至少还剩两张牌时,进行以下操作:把第一张牌扔掉,然后把新的第一张放在整叠牌的最后。输入n,输出扔掉的卡片序列和最后剩的卡片的编号。

知识点:
此题用队列queue非常简单,队列中的函数:front()队列的第一个字符,size()队列的大小,pop()删除队列的第一个字符,push()在队列的队尾加一个字符。

代码:

#include 
#include 
using namespace std;

queue<int>card;

int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
        card.push(i);
    cout<<"delete:";
    while(card.size()>=2){
        cout<<' '<<card.front();
        if(card.size()!=2)
            cout<<",";
        card.pop();
        card.push(card.front());
        card.pop();
    }
    cout<<endl;
    cout<<"remain:"<<card.front();
    card.pop();
    return 0;
}

你可能感兴趣的:(算法竞赛例题,算法,c++,队列)