遞迴實現格雷碼
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
class GrayCode
{
public:
GrayCode(){};
GrayCode(int n) : m_iOrder(n)
{
m_iCodeNum=(int)pow(2.,m_iOrder);
m_spGrayCode=CreatGray(m_iOrder);
}
~GrayCode()
{
delete []m_spGrayCode;
}
void SetCray()
{
cin>>m_iOrder;
m_iCodeNum=(int)pow(2.,m_iOrder);
m_spGrayCode=CreatGray(m_iOrder);
}
string* CreatGray(int order)
{
int codeNum=(int)pow(2.,order);
string * gray = new string[codeNum];
if(order==1)
{
gray[0]="0";
gray[1]="1";
return gray;
}
string* temp = CreatGray(order-1);
for(int i=0;i<codeNum/2;i++)
{
gray[i]="0"+temp[i];
gray[codeNum-i-1 ]="1"+temp[i];
}
delete []temp;
return gray;
}
void PrintCray()
{
for(int i=0;i<m_iCodeNum;i++)
{
cout<<m_spGrayCode[i]<<endl;
}
}
private:
string* m_spGrayCode;
int m_iOrder;
int m_iCodeNum;
};
int main()
{
GrayCode grayCode;
//string[] s=new string[1];
grayCode.SetCray();
grayCode.PrintCray();
return 0;
}
相關推薦
遞迴實現格雷碼
#include <iostream> #include <string> #include <math.h> using namespace std; class GrayCode
遞迴實現獲取簡訊驗證碼按鈕時間倒計時顯示功能
使用遞迴實現獲取簡訊驗證碼的按鈕時間顯示倒計時功能,程式碼十分簡潔易懂。 具體demo實現: <html> <head> <meta charset="utf-8"> <title></title>
[騰訊]生成格雷碼
vector == title ges bject 一個 pes ron 給定 時間限制:3秒 空間限制:32768K 熱度指數:24655 本題知識點: 遞歸 題目描述 在一組數的編碼中,若任意兩個相鄰的代碼只有一位二進制數不同, 則稱這種編碼為格雷碼(Gray C
整形與格雷碼互轉
ack sizeof rgba wrap ros har style mil code 整形轉格雷碼 x= (x>>1)^x 格雷碼轉整形(3種方法) static unsigned int GraytoDecimal(unsigned in
gray-code (格雷碼)
itl its where strong str 解題思路 total 編碼 int 題目描述 The gray code(格雷碼) is a binary numeral system where two successive values differ in onl
格雷碼
param pan spa clas style for reg sig sign binary to gray 1 odule bin2gry(Gry,Bin); 2 parameter length = 8; //以八位示例 3 output [leng
格雷碼(Gray code)仿真
HA 實現 鏈接 計數 variable hide 記錄 strong pan 作者:桂。 時間:2018-05-12 16:25:02 鏈接:http://www.cnblogs.com/xingshansi/p/9029081.html 前言 FIF
systemC構建格雷碼和二進制的轉換
sha process 進行 itl text 信號 版本 分享 進制 廢話不多說,直接上實現:simulus是gray碼信號發生器的實現:simulus.h: include "base.h" #ifndef SIMULUS #define S
[LeetCode] 89. Gray Code 格雷碼
++i div solution end o-c not mat com i++ The gray code is a binary numeral system where two successive values differ in only one bit. Gi
資料結構練習之用棧來遞迴實現5的階乘#C語言實現
剛學資料結構,給大家分享一下今天學習資料結構的棧中的一個練習 也算是順便記錄一下學習過程 #include <stdio.h> typedef struct StackNode { int vn; //儲存n的值 int vf; //儲存fun(n)的值 int t
C語言經典演算法(九)——遞迴實現二分查詢的兩種方法
後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現二分查詢演算法 1、 遞迴實現二分查詢 <1> 題目描述:針對資料,進行二分查詢(要求:資料的排列有序) <2> 方法一:概念法 <3> 方法二:遞迴法 原始碼: 一、 遞迴實現
C語言經典演算法(八)——遞迴實現斐波那契數列的兩種方法
後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現斐波那契數列 1、 遞迴實現斐波那契數列Fib(n) <1> 題目描述:輸入n值,求解第n項的斐波那契數列值 <2> 方法一:概念法 <3> 方法二:遞迴法 斐波那契數列值是值1
C語言經典演算法(七)——遞迴實現階乘演算法的兩種方法
今後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現階乘演算法N! 1、 遞迴實現n! <1> 題目描述:輸入n值,求解n的階乘 <2> 方法一:累乘法 <3> 方法二:遞迴法 原始碼: 一、 遞迴實現n! 1、 累乘法 #
二叉樹非遞迴實現
二叉樹非遞迴實現會比較難理解一點,不過只要理解了非遞迴的,那麼遞迴的就非常好理解了。接下來進行圖文詳解。 C程式碼下載 C++程式碼下載 java程式碼下載 ( 備用地址下載) 導航 1.建立二叉樹 2.前序遍歷二叉樹 3.中序遍歷二叉樹 4.後序遍歷二叉
二叉樹遞迴實現
二叉樹遞迴實現比較符合樹的特點,也較容易理解,程式碼也較為簡單。接下來進行圖文詳解。 C程式碼下載 C++程式碼下載 java程式碼下載 ( 備用地址下載) 導航 1.建立二叉樹 2.前序遍歷二叉樹 3.中序遍歷二叉樹 4.後序遍歷二叉樹 5.層次遍歷
遞迴實現逆轉連結串列
//遞迴實現逆轉連結串列 ListNode *reverseLink2(ListNode *head) { ListNode *newHead; if(head->next==NULL) return head; newHead=reverseLink2
python 迭代法和遞迴 實現斐波那契演算法
題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 1.程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21…. 由規律可知: f(n) = f(n-1)+f(n-2) 符合斐波那契數
python學習筆記(25) 堆疊和遞迴實現三級選單
menu = { '北京':{ '海淀':{ '五道口':{}, '上地':{}, '西三旗':{} }, '昌平':{}, '朝陽':{}, '東城':{} }
遞迴實現刪除某個資料夾下的所有檔案和目錄,包括刪除本身。
核心程式碼: /*** * 刪除指定資料夾下所有檔案 * * @param path  
LeetCode 926. 將字串翻轉到單調遞增 遞迴實現動態規劃 兩種解法
這個題做了一個多小時,考慮複雜了。 開始推動規沒有推出來,然後找到一個遞推關係:從左往右,如果是0,則不需要變動;如果是1,則有兩種選擇(1)將1變為0(2)將1後面的所有數字變為1,這兩種方法中的變動數字最小的方法就是最佳方法,然後依次遞推,很容易寫出遞迴程式。但是這裡面存