您的位置:首页 > 其它

Uva10935 - Throwing cards away I

2017-11-29 18:10 435 查看

一.题目

题目链接:Uva10935

二.思路

典型的队列,对于每次的排,把第一个pop出来输出,第二个pop出来重新push进队尾,只剩1张牌的时候结束,注意只有一张牌时候的情况,详情看代码注释。

三.源代码

#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> cards; //用队列做容器
int n, temp1, temp2;
while ((cin >> n) && (n != 0)) {
for (int i = 1; i <= n; i++)
cards.push(i);
if (n == 1) {
//如果n=1直接输出
cout << "Discarded cards:" << endl << "Remaining card: 1" << endl;
queue<int> empty;
swap(cards, empty);
continue;
}
cout << "Discarded cards: ";
while (n >= 2) {
temp1 = cards.front();//输出队头
cards.pop();
if (n == 2) //注意最后一个数据不需要逗号
cout <<temp1 << endl;
else
cout<<temp1 << ", ";
temp2 = cards.front();//第二个元素添加至队尾
cards.pop();
cards.push(temp2);
n--;
}
cout << "Remaining card: " << temp2 << endl;
queue<int> empty; //清空容器
swap(cards, empty);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: