牛客历年机试真题--猫狗收容所(队列)

猫狗收容所

牛客历年机试真题--猫狗收容所(队列)

使用两个队列,且队列元素为带有顺序的结构体。

牛客历年机试真题--猫狗收容所(队列)

参考代码:

#include<cstdio>
#include<queue>
using namespace std;
struct animal
{
	int number;
	int order;
	animal(int n,int o):number(n),order(o){}
};
int main()
{
	queue<animal> cats,dogs;
	int n,m,t,o=0;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d%d",&m,&t);
		if(m==1)
		{
			if(t>0)
				dogs.push(animal(t,o++));
			if(t<0)
				cats.push(animal(t,o++));
		}
		if(m==2)
		{
			if(t==0)
			{
				if(!dogs.empty()&&!cats.empty())
				{
					if(dogs.front().order<cats.front().order)
					{
						printf("%d ",dogs.front().number); 
						dogs.pop();
					}
					else
					{
						printf("%d ",cats.front().number);
						cats.pop();
					}
				}
				if(!dogs.empty()&&cats.empty())
				{
					printf("%d ",dogs.front().number);
					dogs.pop();
				}
				if(dogs.empty()&&!cats.empty())
				{
					printf("%d ",cats.front().number);
					cats.pop();
				}
			}
			if(t==1&&!dogs.empty())
			{
				printf("%d ",dogs.front().number);
				dogs.pop();
			}
			if(t==-1&&!cats.empty())
			{
				printf("%d ",cats.front().number);
				cats.pop();
			}	
		}
	}
	return 0;
}
上一篇:关于java动态代理的实现


下一篇:工作两年 必学的设计模式