题目大意:
从 $1∼n$ 这 $n$ 个整数中随机选取任意多个,输出所有可能的选择方案。
解题方法:
行吧我承认我是来搞怪的。
直接二进制枚举每个数是否出现,然后直接循环输出即可。
完整代码,时间复杂度:$O(n2^n)$
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
int main()
{
cin >> n;
for (int i = 0; i < 1 << n; i ++ ) { //枚举所有的状态
for (int j = 0; j < n; j ++ ) //枚举每一位,从右往左,第几位就是数字几。
if (i >> j & 1)
cout << j + 1 << " ";
cout << endl;
}
return 0;
}
这写法牛逼,竟然没用到递归