格雷码

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;
}