集合棧計算機

2021-08-21 23:34:53 字數 969 閱讀 9613

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

push:空集「{}」入棧

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

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

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

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

每次操作後,輸出棧頂集合的大小(即元素個數)。例如棧頂元素是a=, } }, 下乙個元素是b=, }} },則:

union操作將得到, }, }} },輸出3.

intersect操作將得到 },輸出1

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

(輸入:先輸入測試次數,再輸入操作次數,再輸入具體操作)

#include#include#include#include#include#include#include using namespace std;

#define all(x) x.begin(), x.end()//所有的內容

#define ins(x) inserter(x, x.begin())//插入迭代器

typedef setset;

mapidcache; //把集合對映成id

vectorsetcache; //根據id取集合

//查詢給定集合x的id。如果找不到,分配乙個新id

int id(set x)

int main()

//cout << "................." << x.size() << endl;//測試語句

s.push(id(x));

}cout << setcache[s.top()].size() << endl;

}cout << "***" << endl;

}return 0;

}

集合棧計算機

集合棧計算機 題目是這樣的 有乙個專門為了集合運算而設計的 集合棧 計算機。該機器有乙個初始為空的棧,並且支援以下操作 push 空集 入棧 dup 把當前棧頂元素複製乙份後再入棧 union 出棧兩個集合,然後把兩者的並集入棧 intersect 出棧兩個集合,然後把二者的交集入棧 add 出棧兩...

集合棧計算機

有乙個專門為了集合運算而設計的 集合棧 計算機。該機器有乙個初始化為空的棧,並且支援以下操作。每次操作後,輸出棧頂集合的大小 即元素的個數 分析 這裡的集合並不是簡單整數集合或者字元集合,而是集合的集合。為了方便起見,此處為每個不同的集合分配乙個唯一的id,則每個集合都可以表示成所包含元素的id集合...

計算機棧原理

記憶體的不同用途 根據不同的作業系統,乙個程序可能被分配到不同的記憶體區域去執行。但是不管什麼樣的作業系統 什麼樣的計算機架構,程序使用的記憶體都可以按照功能大致分為以下4個部分 1 區 這個區域儲存著被裝入執行的二進位制機器 處理器會到這個區域取指並執行。2 資料區 用於儲存全域性變數等。3 堆區...