Throwing cards away I UVA - 10935

題目大意:對列的經典問題,洗牌,先把一個牌取出,然後把下一張放在最後。

思路:用STL的隊列就可以了,每次循環出隊兩次,第一次的值輸出,第二次的值入隊。直到最後一個值,輸出即可。


#include<stdio.h>
#include<iostream>
#include<queue>
using namespace std;
int main()
{
	int t;
	while(cin>>t,t){
		queue<int> q;
		for(int i=1;i<=t;i++){
			q.push(i);
		}
		cout<<"Discarded cards:";
		while(q.size()>=2){
			if(q.size()==2) cout<<" "<<q.front();
			else 
			cout<<" "<<q.front()<<",";
			q.pop();
			q.push(q.front());
			q.pop();
		}
		cout<<endl;
		cout<<"Remaining card: ";
		cout<<q.front();
		cout<<endl;
	}
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章