格雷码
vector<int> grayCode(int n) {
vector<int> ans;
for (int i = 0; i < 1 << n; i++) {
ans.push_back(i ^ (i >> 1));
}
return ans;
}
第k位开始的格雷码
vector<int> circularPermutation(int n, int start) {
vector<int> ans;
for (int i = 0; i < 1 << n; i++) {
ans.push_back(start ^ (i ^ (i >> 1)));
}
return ans;
}