日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

uva540

發(fā)布時間:2024/7/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uva540 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  ?題目的意思大概就是現(xiàn)在讓你做一個數(shù)據(jù)結構,具體的應該是一個隊列,有一堆元素,這堆元素擁有兩個特性,一是它的值,二是它所在的team值。這個隊列滿足以下的一些性質(操作)。

? ? ?ENQUEUE(k) : 將元素k插入隊列,如果隊列中有跟元素k一個team的,則自動插到那個元素的后面,否則插至隊列尾。

? ? ?DEQUEUE:彈出隊首元素,并且輸出

? ? ?STOP:停止所有操作

? ? ?本題我的大致思路就是用二維隊列,隊列里套隊列,我們很容易知道這個隊列滿足一個特性就是抱團性,一個team的都在一起,那么用二維數(shù)組的思想可以直接給他們一個特定的下標來約束這個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

總結

以上是生活随笔為你收集整理的uva540的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。