从最上层取一张一处牌堆,再从最上层取一张放置到最底层
直到牌堆只剩一张牌为止。
输出移除卡牌的顺序和最后保留的卡片
解题思路:队列
WA点:当n=1时没有移除卡牌
代码:
#include <iostream>
#include <queue>
#include <cstdio>
using namespace std;
int main()
{
int t,n;
queue<int> q;
while(scanf("%d",&n)&&n)
{
printf("Discarded cards:");
for(int i=1;i<=n;i++)
{
q.push(i);
}
if(n==1)puts("");
else
while(1)
{
t=q.front();
q.pop();
if(q.size()==1)
{
printf(" %d\n",t);
break;
}
else
printf(" %d,",t);
t=q.front();
q.pop();
q.push(t);
}
printf("Remaining card: %d\n",q.front());
q.pop();
}
return 0;
}