资源简介
自动生成N位格雷码程序,算法复杂度为O(N^2)
实现方法:
1. 1位格雷码有两个码字
2. (n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0
3. (n+1)位格雷码中的后2n个码字等于n位格雷码的码字,按逆序书写,加前缀1
4. (n+1)位格雷码的集合 = n位格雷码集合(顺序)加前缀0 + n位格雷码集合(逆序)加前缀1
简而言之,就是在后一个格雷码等于前一个相邻的格雷码按顺序书写,加前缀0,再按逆序书写,加前缀1
代码片段和文件信息
//用递归的方法产生格雷码
//方法:产生的i位格雷码,在这个i位的格雷码第一位添加一位0,然后把这i位格雷码反向,在其第一位添加1
//这样就可以产生i+1位格雷码
#include
#include
#include
#include
using namespace std;
void generaterGrayCode(int n)
{
vector grayCodeVec;
//当n为1的时候的格雷码
string aa = “0“;
string bb = “1“;
grayCodeVec.push_back(aa);
grayCodeVec.push_back(bb);
//产生大于两位的格雷码,n位格雷码的数量为2^n个
if (n > 1)
{
for (int i = 2; i <= n; i++)
{
//设置一个临时存储空间来存储n-1位格雷码
vector tempGrayCodeVec;
for (size_t k = 0; k < grayCodeVec.size(); k++)
{
tempGrayCodeVec.push_back(grayCodeVec[k]);
}
//在前面产生的n-1位格雷码前面添加一位数0产生2^(n-1)个n位格雷码,并替换掉原来的n-1位格雷码
int tempGrayCodeVecSize = tempGrayCodeVec.size();
for (int j = 0; j < tempGrayCodeVecSize; j++)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 71168 2016-04-06 10:06 generategraycode\Debug\generategraycode.exe
文件 539636 2016-04-06 10:06 generategraycode\Debug\generategraycode.ilk
文件 986112 2016-04-06 10:06 generategraycode\Debug\generategraycode.pdb
文件 6830 2016-04-06 10:06 generategraycode\generategraycode\Debug\BuildLog.htm
文件 663 2016-03-31 20:55 generategraycode\generategraycode\Debug\generategraycode.exe.em
文件 728 2016-03-31 20:55 generategraycode\generategraycode\Debug\generategraycode.exe.em
文件 621 2016-04-06 10:06 generategraycode\generategraycode\Debug\generategraycode.exe.intermediate.manifest
文件 243384 2016-04-06 10:06 generategraycode\generategraycode\Debug\generategraycode.obj
文件 65 2016-04-06 10:06 generategraycode\generategraycode\Debug\mt.dep
文件 199680 2016-04-06 10:06 generategraycode\generategraycode\Debug\vc90.idb
文件 249856 2016-04-06 10:06 generategraycode\generategraycode\Debug\vc90.pdb
文件 2084 2016-04-06 10:06 generategraycode\generategraycode\generategraycode.cpp
文件 3946 2016-03-31 20:55 generategraycode\generategraycode\generategraycode.vcproj
文件 1409 2016-04-06 10:12 generategraycode\generategraycode\generategraycode.vcproj.PC-028.Administrator.user
文件 2419712 2016-04-06 10:12 generategraycode\generategraycode.ncb
文件 914 2016-03-31 20:38 generategraycode\generategraycode.sln
..A..H. 10752 2016-04-06 10:12 generategraycode\generategraycode.suo
文件 6838 2016-04-01 10:39 generategraycode\grayCode.png
文件 403 2016-04-06 10:16 generategraycode\ReadMe.txt
目录 0 2016-04-06 10:06 generategraycode\generategraycode\Debug
目录 0 2016-04-01 10:03 generategraycode\Debug
目录 0 2016-04-06 10:06 generategraycode\generategraycode
目录 0 2016-04-01 11:29 generategraycode
----------- --------- ---------- ----- ----
4744801 23
- 上一篇:LDA资源文档+matlab小例程
- 下一篇:房贷计算器
评论
共有 条评论