二进制枚举法

二进制枚举法枚举所有子集,如果有需要保留顺序号或者一类的则再另设置一个数组即可。

#include
using namespace std;
void fun(int n,int s)
{
	for(int i = 0;i < n;i ++){
		if(s & (1 << i))
		cout << i << " ";
	}
	cout << endl;
}
int main()
{
	int n;
	cin >> n;
	for(int i = 0;i < (1 << n); i ++){    // 2^n - 1 种情况 
		fun(n,i);
	}
	return 0;
}



你可能感兴趣的:(二进制枚举法)