【集合的二進制表示?】
● 01 串(二進制串)與集合之間存在天然的對應關系。對應機理為每個二進制位可以表示集合中一個元素的存在(1)或不存在(0)。例如,集合 {a, b, c} 的子集 {a, c} 可以表示為 101(假設順序為 a、b、c),全集表示為 111,空集表示為 000。
● 集合的二進制表示是一種非常直觀且高效的方式,尤其適用于有限集合的子集枚舉或狀態壓縮。
●?一個長度為 n 的二進制串可以表示 2^n 個子集。例如:n=3 時,有 000、001、010、011、100、101、110、111 共8個子集。
【集合運算與位運算】
交集? → a & b(按位與)
?并集? → a | b(按位或)
對稱差集? → a ^ b(按位異或)
差集? → a & (~b)
【bitset
?與集合的關系】
bitset? 是一種固定大小的二進制位容器,每個位表示集合中元素的存在(1)或不存在(0)。
#include <bits/stdc++.h>
using namespace std;int main() {bitset<8> setA("11001100"); //{2,3,6,7}bitset<8> setB("10101010"); //{1,3,5,7}cout<<(setA & setB)<<endl; //10001000cout<<(setA | setB)<<endl; //11101110cout<<(setA ^ setB)<<endl; //01100110cout<<(setA & ~setB)<<endl; //01000100return 0;
}
?