有乙個專門為了集合運算而設計的「集合棧」計算機。該機器有乙個初始為空的棧,並且支援以下操作:
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 堆區...