今天别人问的一道题,强调用分治法实现 =。=
百度了一下格雷码,然后写了一下。
关于格雷码大家看百度的吧,特别详细,贴个图:
代码如下(header_file.h是我自己写的一个头文件,包括常见的vector iostream等):
#include"header_file.h"using namespace std;vectorgray_code(int n){ if(n==1) { vector v; v.push_back("0"); v.push_back("1"); return v; } else { vector v; vector v1; v1=gray_code(n-1); for(int i=0;i -1;i--) { v.push_back("1"+v1[i]); } return v; }}int main(int argc,char *argv[]){ int n; cout<<"input n:"; cin>>n; vector v; v=gray_code(n); for(int i=0;i
最后:过程是重要的,代码只是你逻辑的体现 -。-