格雷码的几种实现方式 递归 迭代 递推
来源:互联网 发布:excel数据等距分组 编辑:程序博客网 时间:2024/05/01 02:25
递归方式
class GrayCode {public: vector<string> getGray(int n) { // write code here vector<string> res; if(n == 1) { res.push_back("0"); res.push_back("1"); return res; } vector<string> v = getGray(n - 1); for(int i = 0; i < v.size(); i++) { res.push_back("0" + v[i]); } for(int i = v.size() - 1; i >= 0; i--) { res.push_back("1" + v[i]); } return res; }};
迭代方式
void Gray(int n){ if(n<=0) return; vector<string> result; int len=pow(2,n); result.reserve(len); result.push_back("0"); result.push_back("1"); for(int i=1;i<n;i++) { for(int j=result.size();j>0;) { result.push_back(result[--j]); } for(int j=0;j<result.size()/2;j++) result[j]="0"+result[j]; for(int j=result.size()/2;j<result.size();j++) result[j]="1"+result[j]; } for(int i=0;i<len;i++) cout<<result[i]<<endl;}
递推方式
void gray_code(int n){int *a=new int[1<<n];for(int i=0;i<1<<n;i++){a[i]=i<<1^i;}}
<pre class="html" name="code">void _10_2(int n,int nb=0)//十进制转为二进制字符串{int m = log(n*1.0) / log(2.0);if (nb != 0){string rreess(nb, '0');for (int i = 0; i <= m; i++){int r = (n&(1 << (m - i))) >> (m - i);rreess[nb - m - 1 + i] = r + '0';}cout << rreess;}else{char res[1000] = { 0 };for (int i = 0; i <= m; i++){int r = (n&(1 << (m - i))) >> (m - i);res[i] = r + '0';}cout << res;}}
0 0
- 格雷码的几种实现方式 递归 迭代 递推
- 递归,递推,迭代的含义
- 递归,递推,迭代的区别
- Fibonacci的两种实现方式:递归和递推
- 递归,递推,迭代区别:
- HashMap迭代的几种方式
- (区别)递归与迭代&&递归与递推&&迭代与递推
- 二叉树的三种遍历方式的递归实现和迭代实现
- 层次遍历的两种方式:递归与迭代
- 循环(迭代/递推)与递归
- 7、递归思想和迭代思想(递推思想)
- 累加、迭代、递推、穷举、递归 ,等运算,笔记
- 常见算法—累积累加、迭代、递推、递归
- JAVA中断迭代的几种方式
- 举出几种 HashMap 的迭代方式
- 递归方式、迭代方式实现的斐波那契数列。
- 递归算法-----递归算法优化------非递归算法(递推,迭代)----运行时间
- C语言斐波那契数列的四种实现方式—递归,迭代,数组,队列
- 数据结构中的栈和堆,计算机系统内存中的栈和堆的理解
- Spring+Struts+Hibernate框架详解
- Nuwa热修复在项目中应用
- CentOS 6.5 e1000e Timesync Tx Control register not set as expected
- IOS开发多线程篇—GCD介绍
- 格雷码的几种实现方式 递归 迭代 递推
- ionic cordova 控制iOS状态栏的显示,隐藏,颜色
- 产品设计:58同城与赶集网APP改版建议
- xgboost note
- 我的List坑
- 进程的三态模型
- cv1.4 访问通道数据
- iOS 模态跳转与返回
- 希尔排序