集合棧計算機

2021-07-04 15:48:09 字數 1312 閱讀 6401

集合棧計算機

題目是這樣的:

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

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 堆區...