天天看点

利用位运算实现求集合的子集---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);
		}
	}
}
           

继续阅读