生成N位格雷码的递归和递推写法
来源:互联网 发布:微星 windows 10 whql 编辑:程序博客网 时间:2024/05/21 14:52
#include<iostream>#include<vector>#include<string>using namespace std;//递推写法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"); len=2; for(int i=1;i<n;i++) { int temp=len; for(int j=len;j>0;) { result.push_back(result[--j]); temp++; } for(int j=0;j<len;j++) result[j]="0"+result[j]; for(int j=len;j<temp;j++) result[j]="1"+result[j]; len=temp; } for(int i=0;i<len;i++) cout<<result[i]<<endl;}//递归写法void GrayRecr(int n,vector<string> &result){ if(n<=0) return; if(n==1) { result.push_back("0"); result.push_back("1"); return; } else { GrayRecr(n-1,result); int len=result.size(); for(int i=len;i>0;) { result.push_back(result[--i]); } int temp=len; for(int i=0;i<len;i++) result[i]="0"+result[i]; len=result.size(); for(int i=temp;i<len;i++) result[i]="1"+result[i]; }}int main(){//Gray(3); vector<string> result; GrayRecr(3,result); int len=result.size(); for(int i=0;i<len;i++) cout<<result[i]<<endl; return 0;}
0 0
- 生成N位格雷码的递归和递推写法
- 递推递归练习N
- 递推递归练习 N
- 递归递推练习 N
- 《递归递推练习》N
- 递推递归练习N
- 递归和递推
- 递推和递归
- 递推和递归
- 子程序的嵌套、递归和递推
- 对递推和递归的理解
- 递推递归练习 N 青蛙过河
- 递推递归练习N青蛙过河
- 递推递归练习 中的N题
- 递推递归练习 N题
- ACM递归递推练习 Problem N
- 递推递归练习——N
- 递推递归练习--N(青蛙过河)
- SSL常见加密算法
- Android App数据加密
- POJ 3261 Milk Patterns (可重叠的出现K次的最长重复子串)
- 苹果团队App开发流程|Fake it till you make it
- 双层嵌套json字符串(即json对象内嵌json数组)解析为Map
- 生成N位格雷码的递归和递推写法
- Android Studio之版本管理工具Git
- Java 8 Lambda表达式详解
- (不连续)最大公共子序列POJ 1458Common Subsequence
- cipher加密套件(openssl)
- 各种安装包打包发布工具
- iOS 官网的开发手册
- 当电脑都出bug了(一)(长更)
- mac 环境反编译android apk