格雷碼是1種2進制數值系統。在1組數的編碼中,任意兩個相鄰的代碼只有1位2進制數不同。給定1個非負整數n表示格雷碼的位數,輸出所有格雷碼。
格雷碼序列從0開始。格雷碼不唯1。
輸入
2
輸出
00
01
11
10
結果要輸出2進制情勢,可使用bitset,這里設置最大位數為128位,可根據情況修改。格雷碼公式為a ^ (a - 1)
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
int n;
cin >> n;
int maxsize = 1 << n;
for(auto i = 0; i < maxsize; ++i)
{
bitset<128> result(i ^ (i >> 1));
for(int j = n; j > 0; --j)
cout<<result[j - 1];
cout << endl;
}
return 0;
}