从1~n中随机选择数输出(可以什么也不输出),请输出所有的可能,每种可能占一行。(n最大值是16)
思路:一共有2^n种可能,可以用二进制解决。
#include <cstdio> #include <cstring> #include <string> #include <cmath> #include <iostream> #include <algorithm> #include <vector> #include <stack> #include <queue> #include <stdlib.h> #include <sstream> #include <map> #include <set> typedef long long ll; using namespace std; int main() { int n; cin >> n; for (int i=0;i<(1<<n);i++) //一共有2^n种 { for (int j=0;j<n;j++) //一共有n位 { if(i&(1<<j)) cout << j+1 << " "; //如果i的第j位是1的话,就输出j+1(因为位数是从0开始的) } cout << endl; } return 0; }