資源簡介
自動生成N位格雷碼程序,算法復雜度為O(N^2)
實現方法:
1. 1位格雷碼有兩個碼字
2. (n+1)位格雷碼中的前2n個碼字等于n位格雷碼的碼字,按順序書寫,加前綴0
3. (n+1)位格雷碼中的后2n個碼字等于n位格雷碼的碼字,按逆序書寫,加前綴1
4. (n+1)位格雷碼的集合 = n位格雷碼集合(順序)加前綴0 + n位格雷碼集合(逆序)加前綴1
簡而言之,就是在后一個格雷碼等于前一個相鄰的格雷碼按順序書寫,加前綴0,再按逆序書寫,加前綴1
代碼片段和文件信息
//用遞歸的方法產生格雷碼
//方法:產生的i位格雷碼,在這個i位的格雷碼第一位添加一位0,然后把這i位格雷碼反向,在其第一位添加1
//這樣就可以產生i+1位格雷碼
#include?
#include?
#include?
#include?
using?namespace?std;
void?generaterGrayCode(int?n)
{
vector?grayCodeVec;
//當n為1的時候的格雷碼
string?aa?=?“0“;
string?bb?=?“1“;
grayCodeVec.push_back(aa);
grayCodeVec.push_back(bb);
//產生大于兩位的格雷碼,n位格雷碼的數量為2^n個
if?(n?>?1)
{
for?(int?i?=?2;?i?<=?n;?i++)
{
//設置一個臨時存儲空間來存儲n-1位格雷碼
vector?tempGrayCodeVec;
for?(size_t?k?=?0;?k? {
tempGrayCodeVec.push_back(grayCodeVec[k]);
}
//在前面產生的n-1位格雷碼前面添加一位數0產生2^(n-1)個n位格雷碼,并替換掉原來的n-1位格雷碼
int?tempGrayCodeVecSize?=?tempGrayCodeVec.size();
for?(int?j?=?0;?j? {
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????71168??2016-04-06?10:06??generategraycode\Debug\generategraycode.exe
?????文件?????539636??2016-04-06?10:06??generategraycode\Debug\generategraycode.ilk
?????文件?????986112??2016-04-06?10:06??generategraycode\Debug\generategraycode.pdb
?????文件???????6830??2016-04-06?10:06??generategraycode\generategraycode\Debug\BuildLog.htm
?????文件????????663??2016-03-31?20:55??generategraycode\generategraycode\Debug\generategraycode.exe.em
?????文件????????728??2016-03-31?20:55??generategraycode\generategraycode\Debug\generategraycode.exe.em
?????文件????????621??2016-04-06?10:06??generategraycode\generategraycode\Debug\generategraycode.exe.intermediate.manifest
?????文件?????243384??2016-04-06?10:06??generategraycode\generategraycode\Debug\generategraycode.obj
?????文件?????????65??2016-04-06?10:06??generategraycode\generategraycode\Debug\mt.dep
?????文件?????199680??2016-04-06?10:06??generategraycode\generategraycode\Debug\vc90.idb
?????文件?????249856??2016-04-06?10:06??generategraycode\generategraycode\Debug\vc90.pdb
?????文件???????2084??2016-04-06?10:06??generategraycode\generategraycode\generategraycode.cpp
?????文件???????3946??2016-03-31?20:55??generategraycode\generategraycode\generategraycode.vcproj
?????文件???????1409??2016-04-06?10:12??generategraycode\generategraycode\generategraycode.vcproj.PC-028.Administrator.user
?????文件????2419712??2016-04-06?10:12??generategraycode\generategraycode.ncb
?????文件????????914??2016-03-31?20:38??generategraycode\generategraycode.sln
????..A..H.?????10752??2016-04-06?10:12??generategraycode\generategraycode.suo
?????文件???????6838??2016-04-01?10:39??generategraycode\grayCode.png
?????文件????????403??2016-04-06?10:16??generategraycode\ReadMe.txt
?????目錄??????????0??2016-04-06?10:06??generategraycode\generategraycode\Debug
?????目錄??????????0??2016-04-01?10:03??generategraycode\Debug
?????目錄??????????0??2016-04-06?10:06??generategraycode\generategraycode
?????目錄??????????0??2016-04-01?11:29??generategraycode
-----------?---------??----------?-----??----
??????????????4744801????????????????????23
- 上一篇:LDA資源文檔+matlab小例程
- 下一篇:房貸計算器
評論
共有 條評論