ACM士兵队列训练问题

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACM士兵队列训练问题相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
输入样例:

2
20
40

输出样例:

1 7 19
1 19 37

对着样例打一下草稿就行了。

#include<iostream>
#include<queue>
using namespace std;
int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		int a;
		cin>>a;
		
		queue<int>q,q1;
		for(int i=1;i<=a;i++)
		{
			q.push(i);
		}
		
		while(q.size()>3)
		{
			//1 2
			int flag=0;
			while(!q.empty())
			{
				flag++;
				if(flag==1) 
				{
					q1.push(q.front());
					q.pop();
				}
				else if(flag==2)
				{
					q.pop();
					flag=0;
				}
			}
			
			while(!q1.empty())
			{
				q.push(q1.front());
				q1.pop();
			}
			
			if(q.size()<=3) break;
			
			//1 3
			flag=0;
			while(!q.empty())
			{
				flag++;
				if(flag==1||flag==2) 
				{
					q1.push(q.front());
					q.pop();
				}
				else if(flag==3)
				{
					q.pop();
					flag=0;
				}
			}
			
			while(!q1.empty())
			{
				q.push(q1.front());
				q1.pop();
			}
		}
		
		while(q.size()!=1)
		{
			cout<<q.front()<<" ";
			q.pop();
		}
		cout<<q.front()<<endl;
		q.pop();
	}
	return 0;
} 

以上是关于ACM士兵队列训练问题的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1276 士兵队列训练问题(模拟)

hdu-1276 士兵队列训练问题

hdu 1276士兵队列问题queue

杭电1276 士兵队列训练问题

hdu1276士兵队列训练问题[简单STL list]

士兵队列训练问题 (队列+模拟)