集合棧計算機
題目是這樣的:
有乙個專門為了集合運算而設計的「集合棧」計算機。該機器有乙個初始為空的棧,並且支援以下操作:
push:空集「{}」入棧
dup:把當前棧頂元素複製乙份後再入棧
union:出棧兩個集合,然後把兩者的並集入棧
intersect:出棧兩個集合,然後把二者的交集入棧
add:出棧兩個集合,然後把先出棧的集合加入到後出棧的集合中,把結果入棧
每次操作後,輸出棧頂集合的大小(即元素個數)。例如棧頂元素是a=, } }, 下乙個元素是b=, }} },則:
union操作將得到, }, }} },輸出3.
intersect操作將得到 },輸出1
add操作將得到, }}, , } } },輸出3.
(輸入:先輸入測試次數,再輸入操作次數,再輸入具體操作)
sample input29
push
dupadd
push
adddup
adddup
union
5push
push
addpush
intersect
sample output00
1011
2***00
100***
ac**:
#include#include#include#include#include#include#include#include#includeusing namespace std;
typedef setset;
mapmp;//將每個集合編號
vectorvec;//儲存集合
stacka;//集合在vector的位置
int id(set x)//查詢集合的編號
int main()
else if(s[0]=='d')
else
if(s[0]=='u')
set_union(x1.begin(),x1.end(),x2.begin(),x2.end(),inserter(x,x.begin()));
if(s[0]=='i')
set_intersection(x1.begin(),x1.end(),x2.begin(),x2.end(),inserter(x,x.begin()));
a.push(id(x));
}cout << vec[a.top()].size() << endl;
} cout << "***\n";
} return 0;
}
集合棧計算機
有乙個專門為了集合運算而設計的 集合棧 計算機。該機器有乙個初始為空的棧,並且支援以下操作 push 空集 入棧 dup 把當前棧頂元素複製乙份後再入棧 union 出棧兩個集合,然後把兩者的並集入棧 intersect 出棧兩個集合,然後把二者的交集入棧 add 出棧兩個集合,然後把先出棧的集合加...
集合棧計算機
有乙個專門為了集合運算而設計的 集合棧 計算機。該機器有乙個初始化為空的棧,並且支援以下操作。每次操作後,輸出棧頂集合的大小 即元素的個數 分析 這裡的集合並不是簡單整數集合或者字元集合,而是集合的集合。為了方便起見,此處為每個不同的集合分配乙個唯一的id,則每個集合都可以表示成所包含元素的id集合...
計算機棧原理
記憶體的不同用途 根據不同的作業系統,乙個程序可能被分配到不同的記憶體區域去執行。但是不管什麼樣的作業系統 什麼樣的計算機架構,程序使用的記憶體都可以按照功能大致分為以下4個部分 1 區 這個區域儲存著被裝入執行的二進位制機器 處理器會到這個區域取指並執行。2 資料區 用於儲存全域性變數等。3 堆區...