解法:
利用 queue ,先輸出 qu.front()//第一項
然後 pop()
掉//刪除第一項
再把 front()
push()
進去//將第一項加入
最後再 pop()
即可//刪除第一項
程式:
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int n;
queue<int> qu;
while ((cin >> n) && n != 0)
{
for (int i = 1; i <= n; ++i)
qu.push(i);
if (cards.size() == 1) // 當只有一張卡時直接印出即可
cout << "Discarded cards:" << endl
<< "Remaining card: " << qu.front() << endl;
else
{
cout << "Discarded cards: ";
while (qu.size() > 2) // 先輸出最上面的卡然後移出,再將第一張放到最後面再移出
{
cout << cards.front() << ", ";
qu.pop();
qu.push(cards.front());
qu.pop();
}
cout << qu.front(); // 輸出倒數第二張牌
qu.pop();
cout << endl << "Remaining card: " << qu.front() << endl;
}
qu.pop(); // 將 queue 清空
}
}