腾讯在线模拟笔试题目,格雷码问题
2016-04-01 12:37
393 查看
class GrayCode { public: vector<string> strVec; void func(int n, string str,bool tag) { if(n==1) if (true == tag) { strVec.push_back(str + "0"); strVec.push_back(str + "1"); return; } else { strVec.push_back(str + "1"); strVec.push_back(str + "0"); return; } else if (true == tag) { func(n - 1, str + "0",true); func(n - 1, str + "1",false); } else { func(n - 1, str + "1",true); func(n - 1, str + "0",false); } } vector<string> getGray(int n) { // write code here func(n, "", true); return strVec; } };
当n=1时,“0”,“1”;
当n=2时,“00”,“01”,“11”,“10“;
当n=3时,“000”,“001”,“011”,“010”,“110”,“111”,“101”,“100”;
由此可以看出,每次向下递归调用时,总是在原来的字符串的基础上加“0”,“1”,“1”,“0“,”0“,”1“。。。。。
因此要设置一个标志位,用来判断是先加“0”,还是先加“1”;
相关文章推荐
- C++中结构体和类型的sizeof()
- 默认移动构造函数
- C++ 大数模板
- 程序运行抛出Unsupported major.minor version 52.0异常
- 窗口 子控件的使用
- Linux_ select 多路复用
- Visual C++(MFC)实现C/S
- 程序分析(2)
- 程序分析(3)
- 支付宝和内购的区别以及集成方法
- springMVC4(2)请求映射全面分析
- 源码安装Apache http server
- 什么是堆和栈,它们在哪儿?
- 程序分析(1)
- 9. Palindrome Number
- 指针数组和数组指针的区别
- 找不到或无法加载主类 com.sun.tools.javac.Main
- 本月有几天
- Python-zip压缩-解压
- php分享(三十五) 文件多写注意事项