UVA10935 Throwing cards away I(队列)

来源:互联网 发布:java web项目路径配置 编辑:程序博客网 时间:2024/05/17 07:30

题目链接

题目大意:给定数字n,表示有n张卡片放在桌面上,序号从1-n,第一张卡在最上面,第n张卡在最下面,每次丢掉最上面的卡片,然后将现在的第一张放在所有卡牌的最下面,求所有被丢掉的卡牌的最后留下来的。

代码如下:

#include <iostream>#include <stdio.h>#include <string.h>#include <queue>using namespace std;queue<int>que;int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        if(n==0)            break;        while(!que.empty())            que.pop();        for(int i=1;i<=n;i++)        {            que.push(i);        }        printf("Discarded cards:");        while(que.size()>1)        {            int tmp=que.front();            que.pop();            printf(" %d",tmp);            if(que.size()==1)                break;            printf(",");            tmp=que.front();            que.pop();            que.push(tmp);        }        printf("\n");        printf("Remaining card: %d\n",que.front());    }    return 0;}


原创粉丝点击