青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

熱轉(zhuǎn)印www.yxheatpress.com

公司網(wǎng)站模板http://qiyemoban.software8.co/

常用鏈接

統(tǒng)計(jì)

友情鏈接

最新評(píng)論

Gray Code實(shí)現(xiàn)按序產(chǎn)生集合的所有子集

簡介

Gray Code,是幾十年前貝爾實(shí)驗(yàn)室的科學(xué)家Frank Gray提出的一種編碼方案,當(dāng)時(shí)主要用于傳輸信號(hào)以防止出錯(cuò)。Gray Code 除了在通信,硬件設(shè)計(jì)領(lǐng)域中應(yīng)用以外,在計(jì)算機(jī)相關(guān)科學(xué)的其他方面也有廣泛的應(yīng)用,例如按序產(chǎn)生集合的所有子集。


Gray Code實(shí)現(xiàn)按序產(chǎn)生集合的所有子集

子集的按序產(chǎn)生,這個(gè)概念很簡單,舉個(gè)例子,假設(shè)我們的集合為{a,b,c},那么按序產(chǎn)生的子集應(yīng)該是:

空集 (000)   ——   0(編號(hào) 從0開始按順序排序)

a (100)        ——   1

ab  (110)     ——   2

abc   (111)  ——   3

ac

b

bc

c


那么Gray Code是如何產(chǎn)生這樣的序列的呢? 

Gray Code的思想非常的巧妙,我們可以將所產(chǎn)生的子集編號(hào)(范圍為0~2^n-1),第一個(gè)子集為空集(編號(hào)為0,是偶數(shù))。在其后的每個(gè)子集由前一個(gè)子集來決定,如果前一個(gè)子集編號(hào)為偶數(shù),那么則改變前一個(gè)子集的第一位(從左邊數(shù))的二進(jìn)制值(0變成1或者1變成0)作為新的子集。如果前一個(gè)子集的編號(hào)為奇數(shù),那么就將前一個(gè)子集二進(jìn)制左邊數(shù)第一個(gè)1后面的那位改變其值(0變成1或者1變成0)作為新的子集。

根據(jù)上面的Gray Code的思想,還是以集合{a,b,c}為例,第一個(gè)子集(000)的編號(hào)為0(偶數(shù)),推算出第二個(gè)子集是第一個(gè)子集改變左邊數(shù)的第一位的數(shù)值所產(chǎn)生,為100,也就是a(只取為1的字符,a為最左邊的字符對(duì)應(yīng)100中的1)。那么根據(jù)第二個(gè)子集的編號(hào)1(奇數(shù)),推算出第三個(gè)子集是由第二個(gè)子集改變從左數(shù)第一個(gè)1后面那一位的值所產(chǎn)生(100->110),那么110對(duì)應(yīng)的是ab。后面的子集都以此類推即可全部按順序產(chǎn)生。


Gray Code非遞歸的C語言實(shí)現(xiàn)

以下代碼在VS2008下調(diào)試通過


  1. int sum(int n)  
  2. {  
  3.     if(1<=n) return n+sum(n-1);  
  4.     else return 0;  
  5. }  
  6.   
  7. void gray(char *ptr)  
  8. {  
  9.     int len=strlen(ptr);  
  10.     int num=(1<<len);  
  11. //    printf("num=%d  \n",num);  
  12.     int i,j,k;  
  13.     int mod,tmp,mask,tmp1,tmp2;  
  14.     mask=1<<len-1;  
  15.  //   printf("mask=%d  \n",mask);  
  16.     mod=0;//(1<<len)-1;  
  17.     for(i=0;i<num-1;i++)  
  18.     {  
  19.         if(i%2==0)  
  20.         {  
  21.             tmp=mod&mask;  
  22.  //           printf("tmp=%d  ",tmp);  
  23.             if(0!=tmp) {mod=mod&(~mask);}  
  24.             else {mod=mod|(mask);}  
  25.         }  
  26.         else  
  27.         {  
  28.             tmp1=1<<(len-1);  
  29.             for(j=0;j<len;j++)  
  30.             {  
  31. //                printf(" in else");  
  32.                 if(mod&tmp1) break;  
  33.                 tmp1=tmp1>>1;  
  34.  //               printf("tmp1=%d  ",tmp1);  
  35.             }  
  36.             tmp1=tmp1>>1;  
  37.  //           printf(">>1  tmp1=%d  ",tmp1);  
  38.             if(tmp1!=0)   
  39.             {  
  40.                 tmp=mod&tmp1;  
  41.                 if(0!=tmp) {mod=mod&(~tmp1);}  
  42.                 else {mod=mod|(tmp1);}  
  43.             }  
  44.         }  
  45.         tmp2=1<<len-1;  
  46.         for(k=0;k<len;k++)  
  47.         {  
  48.             if(mod&tmp2) printf("%c",ptr[k]);  
  49.             tmp2=tmp2>>1;  
  50.         }  
  51.         printf("\n");  
  52.     }  
  53. }  
  54.   
  55. int main()  
  56. {  
  57. //    printf("  result=%d ",sum(4));  
  58.     char *p="abcd";  
  59.     gray(p);  
  60.     system("pause");  
  61. }  

posted on 2012-10-29 17:08 不聽話的 閱讀(1103) 評(píng)論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品天天摸av网| 亚洲第一网站| 亚洲中午字幕| 亚洲视屏在线播放| 国产精品久久福利| 亚洲欧美一区二区视频| 午夜精品视频在线| 激情久久综艺| 欧美国产第一页| 欧美精品一区二区三区视频| 99视频一区| 亚洲综合欧美日韩| 激情成人综合| 亚洲日本aⅴ片在线观看香蕉| 欧美精品18+| 欧美亚洲在线观看| 老司机精品久久| 亚洲网站视频福利| 午夜精品久久久久久久久久久| 一区二区三区自拍| 亚洲精品亚洲人成人网| 国产精品私房写真福利视频 | 免费久久99精品国产自| 亚洲三级视频| 亚洲欧美国内爽妇网| 在线精品国精品国产尤物884a| 91久久黄色| 国产亚洲一区在线| 亚洲人成啪啪网站| 国内视频精品| 99热这里只有精品8| 狠狠狠色丁香婷婷综合激情| 亚洲人成在线播放| 一区二区三区在线免费观看| 亚洲免费电影在线| 在线观看成人网| 亚洲视频一区二区| 亚洲精品一区二区三区婷婷月| 亚洲欧美日韩在线观看a三区| 亚洲国产日韩欧美在线99| 亚洲无限av看| 99亚洲伊人久久精品影院红桃| 欧美一区=区| 亚洲男人第一网站| 欧美高清你懂得| 免费看精品久久片| 国产偷久久久精品专区| 99精品国产福利在线观看免费 | 国产精品天美传媒入口| 欧美激情中文字幕乱码免费| 国产日韩欧美综合在线| 日韩视频一区二区| 亚洲乱码国产乱码精品精| 欧美在线综合| 久久精品网址| 国产精品亚洲片夜色在线| 亚洲人成绝费网站色www| 亚洲福利视频网站| 久久狠狠亚洲综合| 久久精品观看| 国产酒店精品激情| 亚洲欧美经典视频| 午夜在线视频一区二区区别| 欧美手机在线| 亚洲最快最全在线视频| 亚洲视频一起| 欧美午夜精品久久久| 99精品国产福利在线观看免费| 亚洲伦理中文字幕| 欧美激情中文字幕乱码免费| 欧美激情第一页xxx| 亚洲欧洲一区二区三区在线观看| 久久久视频精品| 你懂的网址国产 欧美| 精品动漫3d一区二区三区免费| 久久成人精品一区二区三区| 久久午夜国产精品| 在线精品国产成人综合| 欧美成人官网二区| 日韩亚洲综合在线| 亚洲欧美网站| 国产视频一区在线| 久久视频在线看| 亚洲国产精品va| 在线亚洲免费视频| 国产精品系列在线| 久久精品视频在线免费观看| 欧美电影打屁股sp| 99riav国产精品| 国产精品欧美日韩| 久久精品人人做人人爽电影蜜月| 欧美成人69| 正在播放日韩| 国产亚洲精品一区二555| 久久一区视频| 亚洲视频免费看| 久久亚洲精品一区二区| 9久草视频在线视频精品| 欧美三级网页| 欧美一区综合| 亚洲日本va午夜在线电影| 亚洲欧美另类中文字幕| 亚洲成人资源| 国产精品国产三级国产普通话99| 亚洲综合精品一区二区| 亚洲第一网站| 久久精品国产清高在天天线| 亚洲精品日产精品乱码不卡| 国产精品视频999| 欧美激情综合在线| 欧美一区二区三区日韩| 日韩小视频在线观看| 久久久综合网站| 亚洲一区二区不卡免费| 亚洲福利视频免费观看| 国产精品一区二区久激情瑜伽| 欧美成人午夜激情| 久久精品国产96久久久香蕉| 99re6这里只有精品| 欧美成年人网站| 欧美在线免费| 亚洲一二区在线| 亚洲免费观看在线观看| 韩国精品主播一区二区在线观看| 欧美小视频在线观看| 欧美v亚洲v综合ⅴ国产v| 欧美在线视频一区| 亚洲欧美在线看| 在线视频你懂得一区| 亚洲精品少妇30p| 欧美国产激情| 免费视频一区二区三区在线观看| 欧美一区亚洲一区| 午夜视黄欧洲亚洲| 亚洲欧美激情诱惑| 国产精品99久久99久久久二8| 亚洲国产精品女人久久久| 国产一区二区三区久久悠悠色av| 国产精品视频福利| 国产精品极品美女粉嫩高清在线| 欧美日本免费一区二区三区| 牛夜精品久久久久久久99黑人| 久久夜色精品国产欧美乱极品 | 欧美a级一区二区| 久久精品视频免费| 久久久www| 久久综合狠狠综合久久激情| 久久久噜噜噜久久人人看| 欧美中文在线视频| 久久精品亚洲一区二区三区浴池| 欧美一区中文字幕| 久久精品一级爱片| 蜜桃久久精品一区二区| 欧美成人自拍视频| 亚洲电影第三页| 亚洲精品美女久久7777777| 亚洲国产成人精品久久久国产成人一区| 欧美成人精品| 亚洲国产精品专区久久| 亚洲精品国精品久久99热| 洋洋av久久久久久久一区| 亚洲私拍自拍| 午夜精品久久久久久久蜜桃app| 午夜日韩视频| 久久中文精品| 欧美日韩国产综合久久| 欧美亚州一区二区三区| 国产视频亚洲精品| 亚洲国语精品自产拍在线观看| 亚洲精品影视| 亚洲欧美一区二区三区极速播放| 久久九九热re6这里有精品| 欧美激情国产日韩| 99亚洲一区二区| 欧美一区二区三区啪啪| 免费在线视频一区| 国产精品毛片一区二区三区| 国内精品免费午夜毛片| 亚洲免费电影在线| 欧美一区三区三区高中清蜜桃| 欧美成熟视频| 亚洲一级片在线观看| 久久综合久久久久88| 欧美日韩一区在线| 狠狠做深爱婷婷久久综合一区| 一本色道88久久加勒比精品| 欧美一区二区三区在| 亚洲电影自拍| 午夜在线精品| 欧美日韩一区二区三区免费看| 国产视频观看一区| 中日韩美女免费视频网址在线观看| 欧美一级专区| 日韩午夜av电影| 老司机67194精品线观看| 国产精品免费观看视频| 亚洲精品视频在线| 久久免费高清| 小黄鸭精品aⅴ导航网站入口| 欧美日韩国产区|