题意

最终排列本质就是格雷码 格雷码:在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同; 所以我们可以用其性质就是上面的,通过贪心构造出最优排列。

#include<bits/stdc++.h>
using namespace std;
 
int main() {
    int n;
    cin >> n;
     
    for(int i = 0; i < (1 << n); i++) {
        cout << (i ^ (i >> 1)) << " ";
    }
     
    return 0;
}