格雷码
https://ac.nowcoder.com/acm/contest/120564/C
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码。
格雷码的输出方式
void solve()
{
int n;
cin >> n;
int tol = 1 << n;
for (int i = 0; i < tol; i++)
{
cout << (i ^ (i >> 1)) << " ";
}
cout << endl;
}
格雷码会使\(\sum_{k = 1}^{2^{n}-1}(p_k\ xor \ p_{k+1})\)最小。
浙公网安备 33010602011771号