卡片游戏 (Throwing cards away I)(队列+模拟)

桌子上有n张牌,从第一张牌(即位于牌面的牌)开始,从上往下一次编号为1~n。当剩下两张牌多于两张时进行一下操作:把第一张牌扔掉,然后把新的第一张牌放到整叠牌的最后。当还剩下一张牌的时候,停止操作。
输入每行包括一个n,输出每次扔掉的牌及最后剩下的牌。(n<=50)
这题的输出要注意:逗号后面有空格,冒号后面没有空格。
当n=1的时候,应该输出Discarded cards:(此处没有空格)Remaining card: 1(有空格)

#include
using namespace std;
int main()
{
    int n;
    queue<int>q;
    while(scanf("%d",&n)&&n)
    {
        bool f=1;
        for(int i=1;i<=n;i++) 
  	{
   	    q.push(i);
  	}
  	printf("Discarded cards:");
        while(q.size()!=1)
        {
            if(f) 
            {
    		printf(" "),f=0;
            }
            else 
            {
    		printf(", ");
            }
            printf("%d",q.front());
            q.pop();
            q.push(q.front());
            q.pop();
        }
        printf("\nRemaining card: %d\n",q.front());
        q.pop();
    }
    return 0;
}

你可能感兴趣的:(c++,c语言,c#)