知道啥是 gray code 就是收获了.
下面介绍了 gray code 发明的 motivation, 了解动机后就知道啥是 gray code 了.
https://zh.wikipedia.org/wiki/格雷码
// 这题让我知道了啥是 gray code
// gray code (https://zh.wikipedia.org/wiki/格雷码)
// 編碼的方式定義為每個鄰近數字都只相差一個位元,因此也稱為最小差異碼.
// 可以使裝置做數字步進時只更動最少的位元數以提高穩定性
// The idea is simple. G(i) = i^ (i/2).
vector<int> grayCode(int n) {
vector<int> res;
for (int i = 0; i < 1 << n; i++)
res.push_back(i ^ i >> 1);
return res;
}