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

r囧r小猫 2022-11-30 04:15 198阅读 0赞

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

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int n;
  6. queue<int>q;
  7. while(scanf("%d",&n)&&n)
  8. {
  9. bool f=1;
  10. for(int i=1;i<=n;i++)
  11. {
  12. q.push(i);
  13. }
  14. printf("Discarded cards:");
  15. while(q.size()!=1)
  16. {
  17. if(f)
  18. {
  19. printf(" "),f=0;
  20. }
  21. else
  22. {
  23. printf(", ");
  24. }
  25. printf("%d",q.front());
  26. q.pop();
  27. q.push(q.front());
  28. q.pop();
  29. }
  30. printf("\nRemaining card: %d\n",q.front());
  31. q.pop();
  32. }
  33. return 0;
  34. }

发表评论

表情:
评论列表 (有 0 条评论,198人围观)

还没有评论,来说两句吧...

相关阅读