uva 12096 集合棧計算機

2021-09-25 10:29:47 字數 613 閱讀 7763

uva 12096 集合棧計算機

題目:有乙個專門為了集合運算而設計的「集合棧」計算機。該機器有乙個初始為空的棧,並且 支援以下操作。

push:空集「{}」入棧。

dup:把當前棧頂元素複製乙份後再入棧。

union:出棧兩個集合,然後把二者的並集入棧。

intersect:出棧兩個集合,然後把二者的交集入棧。

add:出棧兩個集合,然後把先出棧的集合加入到後出棧的集合中,把結果入棧。

每次操作後,輸出棧頂集合的大小(即元素個數)。

例如,棧頂元素是a=, }},下乙個元素是b=,}}},

則: union操作將得到,},}}},輸出3。

intersect操作將得到},輸出1。

add操作將得到,}},,}}},輸出3。

輸入不超過2000個操作,並且保證操作均能順利進行(不需要對空棧執行出棧操作)

剛開始沒看懂題目的add操作,興沖沖地開了個結構體就開始莽,後來,,,跑了遍樣例發現,,,add操作是集合套集合啊(俄羅斯套娃嗚嗚嗚~~~),然後心底一涼,可咋整

無奈看題解

1. stl中的set 有內建的求交集,並集,差集的函式

2.給每個不同的set分配乙個唯一的id

UVa 12096 集合棧計算機

這題的話,我們讀入操作之後,首先對於空集就是初始化為空。我們可以使用typedef 對於 set 重新命名為set,這樣就可以直接用set 的語法進行空集的初始化了。這題主要是對於集合的處理,我們可以給集合乙個對映函式,這個函式對於已知集合就返回該id,讓主函式進行相應的操作。對於未知集合就按序存入...

UVa 12096 集合棧計算機

對於乙個以集合為元素的棧,初始時棧為空。輸入的命令有如下幾種 push 將空集 壓棧 dup 將棧頂元素複製乙份壓入棧中 union 先進行兩次彈棧,將獲得的集合a和b取並集,將結果壓棧 intersection 先進行兩次彈棧,將獲得的集合a和b取交集,將結果壓棧 add 先進行兩次彈棧,將獲得的...

uva12096集合棧計算機

預備知識 set 1.求交集 int a 5 int b 5 vectorc 10 一定要指定大小,否則會無法執行 vector iterator it it set union a,a 5,b,b 5,c.begin set union返回最後乙個元素後的位址,自動去重 或者it set unio...