网站建设与制作课后题答案,南京网站设计公司大全,企业信息管理系统的发展历程,wordpress本地化题目的意思大概就是现在让你做一个数据结构#xff0c;具体的应该是一个队列#xff0c;有一堆元素#xff0c;这堆元素拥有两个特性#xff0c;一是它的值#xff0c;二是它所在的team值。这个队列满足以下的一些性质#xff08;操作#xff09;。 ENQUEUE(k) #xf… 题目的意思大概就是现在让你做一个数据结构具体的应该是一个队列有一堆元素这堆元素拥有两个特性一是它的值二是它所在的team值。这个队列满足以下的一些性质操作。 ENQUEUE(k) 将元素k插入队列如果队列中有跟元素k一个team的则自动插到那个元素的后面否则插至队列尾。 DEQUEUE弹出队首元素并且输出 STOP停止所有操作 本题我的大致思路就是用二维队列队列里套队列我们很容易知道这个队列满足一个特性就是抱团性一个team的都在一起那么用二维数组的思想可以直接给他们一个特定的下标来约束这个team然后至于这个team内部怎么排那是这个team自己的事了对于每个team建立一个普通的queue来维护它那么输出时是先按大顺序后小顺序弹出就行了 #include cstdio
#include cstring
#include iostream#define MAXN 1010using namespace std;
struct Queue {int f , r;int ele[MAXN];
}que[MAXN];
int T , n , front , rear , Case 0;
int h[MAXN*MAXN];
int line[MAXN];void init() {Case ;cout Scenario # Case endl;memset(h,0,sizeof(h));memset(que,0,sizeof(que));memset(line,-1,sizeof(line));
}void enqueue(int num) {if (line[h[num]] 0) {line[h[num]] rear;que[rear].ele[que[rear].r] num;if (rear T) rear rear % T;}else que[line[h[num]]].ele[que[line[h[num]]].r] num;
}void dequeue() {cout que[front].ele[que[front].f] endl;if (que[front].f que[front].r) {line[h[que[front].ele[que[front].f-1]]] -1;que[front].f que[front].r 0;memset(que[front].ele,0,sizeof(que[front].ele));front ;if (front T) front front % T;}
}int main () {string str;while (cin T) {if (!T) break; init();int k;front rear 0;for (int i 0;i T;i) {cin n;for (int j 0;j n;j) {cin k;h[k] i;}}while (cin str str ! STOP) {if (str ENQUEUE) {cin k;enqueue(k);}else dequeue();}cout endl;}return 0;
} 最终测试结果 转载于:https://www.cnblogs.com/Wiki-ki/archive/2012/07/14/2591373.html