UVA - 10935 Throwing cards away I

https://vjudge.net/problem/UVA-10935
vector

#include<iostream>
#include<algorithm>
#include<queue>
#include<unordered_set>
#include<cstdio>
using namespace std;
int main()
{
	int n;
	while(cin>>n)
	{
		if(n==0) break;
		vector<int> q,ans;
		for(int i=1;i<=n;i++) q.push_back(i);
		
		cout<<"Discarded cards:";
		int f=0;
		while(q.size()>1)
		{
			if(!f)
				printf(" %d",q[0]);
			else
				printf(", %d",q[0]);
			f=1;
			q.erase(q.begin());
			
			q.push_back(q[0]);
			q.erase(q.begin());
		}
		printf("\nRemaining card: %d\n",q[0]);
	}
	return 0;
}

队列

#include<stdio.h>
#include<queue>
#include<iostream>
using namespace std;
int main(void)
{
	queue<int>q;
	int n,p,k,j;
	while(~scanf("%d",&n))
	{
		if(n==0)
			break;
		for(int i=1; i<=n; i++)
			q.push(i);

		cout<<"Discarded cards:";
		int f=0;
		while(q.size()>1)
		{
			int t=q.front();
			q.pop();
			if(!f)
				cout<<" "<<t;
			else
				cout<<", "<<t;

			t=q.front();
			q.pop();
			q.push(t);

			f=1;
		}
		cout<<"\nRemaining card: "<<q.front()<<endl;
		q.pop();

	}
	return 0;
}
posted @ 2021-08-19 15:22  斯文~  阅读(20)  评论(0)    收藏  举报

你好!