https://www.nowcoder.com/questionTerminal/50959b5325c94079a391538c04267e15
生成n位格雷码m个。
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; } };
#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