#include <iostream>
#include <string>
#include <math.h>
using namespace std;
class GrayCode
{
public:
GrayCode(){};
GrayCode(int n) : m_iOrder(n)
{
m_iCodeNum=(int)pow(2.,m_iOrder);
m_spGrayCode=CreatGray(m_iOrder);
}
~GrayCode()
{
delete []m_spGrayCode;
}
void SetCray()
{
cin>>m_iOrder;
m_iCodeNum=(int)pow(2.,m_iOrder);
m_spGrayCode=CreatGray(m_iOrder);
}
string* CreatGray(int order)
{
int codeNum=(int)pow(2.,order);
string* gray = new string[codeNum];
if(order==1)
{
gray[0]="0";
gray[1]="1";
return gray;
}
string* temp = CreatGray(order-1);
for(int i=0;i<codeNum/2;i++)
{
gray[i]="0"+temp[i];
gray[codeNum-i-1]="1"+temp[i];
}
delete []temp;
return gray;
}
void PrintCray()
{
for(int i=0;i<m_iCodeNum;i++)
{
cout<<m_spGrayCode[i]<<endl;
}
}
private:
string* m_spGrayCode;
int m_iOrder;
int m_iCodeNum;
};
int main()
{
GrayCode grayCode;
//string[] s=new string[1];
grayCode.SetCray();
grayCode.PrintCray();
return 0;
}
递归实现格雷码
最新推荐文章于 2023-03-17 10:58:13 发布