https://www.nowcoder.com/questionTerminal/50959b5325c94079a391538c04267e15
生成n位格雷码m个。
C++
class GrayCode {
public:
int k;
string change(int num){
stringstream ss;
string ans="";
for(int i=1;i<=k;i++){
int p = num%2;
ans+=p+'0';
num = num/2;
}
reverse(ans.begin(),ans.end());
// while(num){
//
// }
return ans;
}
vector<string> getGray(int n) {
// write code here
vector<string>p;
k = n;
int S = pow(2.0,k);
for(int i=0;i<S;i++){
int uu = i^(i/2);
p.push_back(change(uu));
// cout<<<<endl;
}
return p;
}
};
C++
#include<bits/stdc++.h>
using namespace std;
int k;
string change(int num){
stringstream ss;
string ans="";
for(int i=1;i<=k;i++){
int p = num%2;
ans+=p+'0';
num = num/2;
}
reverse(ans.begin(),ans.end());
// while(num){
//
// }
return ans;
}
int main()
{
cin>>k;
int S = pow(2.0,k);
for(int i=0;i<S;i++){
int uu = i^(i/2);
cout<<change(uu)<<endl;
}
return 0;
}
https://blog.csdn.net/pipisorry/article/details/72356418
http://www.matrix67.com/blog/archives/266