title:n孩子数数游戏date: 2020-12-21 10:22:12
tags: C++
categories: 编程练习

问题描述

n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。给出孩子的出列顺序

  1. #include <iostream>
  2. #include <queue>
  3. #include <vector>
  4. using namespace std;
  5. int main()
  6. {
  7. int n;cin>>n;
  8. queue <int> Q;
  9. vector <int> visited;
  10. int count = 0;
  11. int i;
  12. for(i = 0;i <= n;i++) visited.push_back(0); //所有孩子均未出局
  13. while(1) //数数
  14. {
  15. for(i = 1;i <= n;i++)
  16. {
  17. count++;
  18. if(visited.at(i) == 1) count--; //出局孩子数的数不算
  19. if(count == 3)
  20. {
  21. count = 0;
  22. visited.at(i) = 1;
  23. Q.push(i); //孩子出局
  24. }
  25. }
  26. if(Q.size() == n) break; //所有孩子都出局,结束数数
  27. }
  28. while(!Q.empty())
  29. {
  30. cout<<Q.front()<<"==>";
  31. Q.pop();
  32. }
  33. return 0;
  34. }