您的位置:首页 > 其它

UVa 10935 Throwing cards away I【队列】

2015-02-24 22:36 441 查看
题意:给出 n张牌,从上往下编号依次为1到n,当牌的数目至少还剩下2张时,把第一张牌扔掉,然后把新的一张牌放在牌堆的最底部,问最后剩下的那一张牌是哪一张牌。

模拟队列的操作-------

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;

queue<int>q;

int main()
{
int i,j,n,ans,a,b;
while(scanf("%d",&n)!=EOF&&n)
{
while(!q.empty()) q.pop();
for(i=1;i<=n;i++)
q.push(i);
printf("Discarded cards:");
while(q.size()!=1)
{
b=q.front();q.pop();
if(q.size()!=1) printf(" %d,",b);
else printf(" %d",b);
a=q.front();q.pop();
q.push(a);
}
printf("\n");
printf("Remaining card: %d\n",q.front());
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: