1. 程式人生 > >遞迴實現格雷碼

遞迴實現格雷碼

    #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,這兩種方法中的變動數字最小的方法就是最佳方法,然後依次遞推,很容易寫出遞迴程式。但是這裡面存