天天看點

利用位運算實作求集合的子集---C++實作

//一共有2^n-1種可能 利用0 1辨別該位是否取  若為1則取 反正丢棄
void getAllSubSet(int* arr, int len, vector<vector<int> >& v) {
	if (arr && len) {
		for (int i = 0; i < 1 << (len); i++) {
			vector<int>temp_vec;
			for (int j = 0; j < len; j++) {
				if ((1 << j)&i) {
					temp_vec.push_back(arr[j]);
				}
			}
			v.push_back(temp_vec);
		}
	}
}
           

繼續閱讀