비트마스킹으로 데이터를 표현하는 것 (배열을 대체)
s &= (1<<i);
s |= (1<<i);
if(s & (1<<i))
s ^= (1<<i)
i = s & -s;
(1 << n) - 1;
비트마스킹은 combi 함수와 마찬가지로 NC0,NC1,,,NCN의 경우의 수를 탐색할 수 있다.
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<char> arr = {'A', 'B', 'C', 'D'};
for(int mask = 0; mask < (1<<4); mask++) { //4개의 포함, 불포함 경우의 수 모두 포함해야하니 0000~1111 사용
cout << "{ ";
for(int i=0;i<4;i++) { //오른쪽부터 set되어있는 인덱스 검사
if(mask & (1<<i))
cout << arr[i] << ' ';
}
cout << "}\n";
}
}
int 자료형은 32비트이다 -> 최대 32개 요소의 포홤, 불포함 여부만 비트마스킹으로 나타낼 수 있다.