格雷码(多种方法)

class GrayCode
{
public:
    vector getGray1(int n)
    {
        vectorv;
        if(n<=0)return v;
        int num=pow(2,n);
        for(int i=0; i>1))>>j)&1)
                {
                    vi+='1';
                }
                else
                {
                    vi+='0';
                }
            }
            reverse(vi.begin(),vi.end());
            v.push_back(vi);
        }
        return v;
    }
    vector getGray2(int n)
    {
        vectorv(pow(2,n));
        if(n==1)
        {
            v[0]='0';
            v[1]='1';
            return v;
        }
        vectorprev=getGray(n-1);
        for(int i=0; i getGray(int n)
    {
        vectorv;
        for(int i=0; i=0; j--)
                {
                    string temp1='0'+v[j];
                    string temp2='1'+v[j];
                    v[j]=temp1;
                    v.push_back(temp2);
                }
            }
        }
        return v;
    }

};

你可能感兴趣的:(IT)