格雷码C++递归实现
2024-10-21 13:15:25
昨天参加腾讯的笔试,结果答的一塌糊涂,大题第一题是关于格雷码的递归实现的,当时没写出来,今天查了下资料试着用C++实现一下。
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
unsigned int *uIntGaryCode(int N);//二进制格雷码
string *sGaryCode(int N);//字符串型格雷码 int main()
{
int N;
N=;
string *sCode=sGaryCode(N);
for(int i=;i<pow(,N);i++)
cout<<sCode[i]<<endl;
system("pause");
return ;
} unsigned int *uIntGaryCode(int N)//二进制型格雷码的递归实现
{
unsigned int *code=new unsigned int[(int)pow(,N)];
if(==N)
{
code[]=;
code[]=;
}
else
{
int length=(int)pow(,N-);
unsigned int*uiCode=uIntGaryCode(N-);
for(int i=;i<length;i++)
{
code[i]=uiCode[i] ;
code[length+i]= uiCode[length-i-]+pow(,N-);
}
delete []uiCode;
}
return code;
} string *sGaryCode(int N)//字符串型格雷码的递归实现
{
string *code=new string[(int)pow(,N)];
if(==N)
{
code[]='';
code[]='';
}
else
{
int length=(int)pow(,N-);
string *sCode=sGaryCode(N-);
for(int i=;i<length;i++)
{
code[i]=""+sCode[i];
code[length+i]=''+sCode[length-i-];
}
delete [] sCode;
}
return code;
}
最新文章
- 极路由2(极贰)ROOT并刷了OpenWrt
- 125个工具与技术(PMBOK2008)
- 打造Ubuntu下Java开发环境
- JavaWeb学习记录(十二)——商城购物之数据库操作的接口定义
- 搭建高性能计算环境(一)、Linux操作系统的安装和配置
- centos安装postfixadmin
- [Netbeans]为面板设置背景图片
- 搭建scala开发环境
- Android界面刷新方法
- C++编写ATM(2)
- CKEditor4.x部署和配置
- Java_HelloWorld
- Java编程 “提高性能” 应尽力做到
- struts ajax多级下拉菜单
- DCOS实践分享(2):基于Docker Compose和Swarm的Docker化之路
- linux进程管理和系统状态常用命令简介
- 基于HALCON的模板匹配方法总结
- POJ2763-Housewife Wind-树上单点修改区间求和
- Jni 线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)
- Consul vs. Zookeeper