要使两数异或值最小,即两数二进制的差异最小。
例如0000后为0001,0001后本应为0000,但0000在前面已出现过。
所以0001后为0010。 即0000——0001——0010——0011,与格雷码一致。
下面是代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int n;
cin>>n;
for(int i=0;i<(1<<n);i++){
cout<<(i^(i/2))<<" ";
}
}

京公网安备 11010502036488号