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

no_rain

huffman 編碼學(xué)習(xí)

該程序?qū)崿F(xiàn)的功能是將一段字符串進(jìn)行統(tǒng)計(jì)之后再進(jìn)行huffman編碼(二進(jìn)制);
注意的地方:
1,huffman編碼要用到貪心算法,所以用priority_queue可以在常量時(shí)間內(nèi)取出和插入值。
2,靜態(tài)建樹:huffman樹的節(jié)點(diǎn)表示方法采用了最多的變量,即父親節(jié)點(diǎn),左右子節(jié)點(diǎn)(因?yàn)槌绦蛑写_實(shí)有這種需要,這里不同與二叉堆,無法通過在靜態(tài)樹(鏈表)的位置來確定其父親節(jié)點(diǎn)和子節(jié)點(diǎn)); 

  1 #include<iostream>
  2 #include<cstring>
  3 #include<queue>
  4 #include<cstdlib>
  5 using namespace std;
  6 const int MAXSIZE = 27;
  7 class huffNode{
  8 public:
  9   int pr;
 10   int lc , rc;
 11   char s;
 12   int pow;
 13   bool operator < (const huffNode& b)const{
 14     return pow > b.pow;
 15   }
 16 };
 17 huffNode huff[MAXSIZE * 2];
 18 string buf;
 19 int count[26];
 20 priority_queue<huffNode> greed;
 21 //for the sake of convenience , assume that the
 22 //standard input is from 'a' to 'z'.
 23 int  input(){
 24   cout << "input the text!"<<endl;
 25   cin >> buf;
 26   for(int i = 0; i < 26 ; i++) count[i] = 0;
 27   memset(huff , 0, sizeof(huff));
 28   for(int i = 0; i < buf.length();i++)count[buf[i]-'a']++;
 29   int len = 0;
 30   for(int i = 0 ,j = 0; i < 26; i++)
 31     if(count[i]){
 32       huff[j].s = i + 'a';
 33       huff[j].pow = count[i];
 34       huff[j].pr = j;
 35       cout << "the" << ' '<<'\''<< char(i+'a') <<'\''
 36        <<' '<<"have arisen for " <<count[i]<<" time(s)"
 37        <<endl;
 38       greed.push(huff[j]);
 39       len = j;
 40       j++;
 41     }
 42   return len;
 43 }
 44 
 45 int createTree(int len){
 46   if(len == 0) {
 47     cout << " Only one kind of alf !"<<endl;
 48     exit(1);
 49   }
 50   huffNode temp1 ,temp2,temp;
 51   while(!greed.empty()){
 52     temp1 = greed.top();
 53     greed.pop();
 54     temp2 = greed.top();
 55     greed.pop();
 56     len ++;
 57     temp.lc = temp1.pr;
 58     temp.rc = temp2.pr;
 59     huff[temp1.pr].pr = huff[temp2.pr].pr = len;
 60     temp.pr = len;
 61     temp.pow = temp1.pow + temp2.pow;
 62     huff[len] = temp;
 63     if(!greed.empty()) greed.push(temp);
 64   }
 65   return len;
 66 }
 67 
 68 void reserve(char * a){
 69   int len = strlen(a);
 70   for(int i = 0 ; i <= len/2 ;i ++)
 71     swap(a[i],a[len-i-1]);
 72 }
 73 struct code{
 74   char s;
 75   char co[50];
 76 };
 77 
 78 void coding(int len1,int len2){
 79   code* mycode = new code[len1+1];
 80   memset(mycode ,0 ,sizeof(mycode));
 81   for(int i = 0; i <= len1 ; i++){
 82     int j = i;
 83     int t = 0;
 84     mycode[i].s = huff[i].s;
 85     while(j < len2){
 86       if(huff[huff[j].pr].lc == j)
 87     mycode[i].co[t++] = '0';
 88       else mycode[i].co[t++] = '1';
 89       j = huff[j].pr ;
 90     }
 91     reserve(mycode[i].co);
 92     cout << "the code of " << mycode[i].s
 93      << " is " << mycode[i].co <<endl;
 94   }
 95   delete[] mycode;
 96 }
 97 
 98 int main(){
 99   int len1 = input();
100   int len2 = createTree(len1);
101   coding(len1,len2); 
102 }
103   
104   
105       
106 

posted on 2011-12-06 14:46 is-programmer 閱讀(427) 評(píng)論(0)  編輯 收藏 引用


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


導(dǎo)航

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆檔案

文章分類

文章檔案

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲自拍另类| 亚洲永久免费观看| 国产欧美视频一区二区三区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久精品成人一区二区三区| 欧美激情综合色综合啪啪| 久久先锋影音av| 国产精品一区一区| 在线综合亚洲欧美在线视频| 亚洲人精品午夜| 久久亚洲春色中文字幕久久久| 性亚洲最疯狂xxxx高清| 欧美日韩一区二区三| 亚洲黄页视频免费观看| 亚洲第一狼人社区| 久久夜色精品国产亚洲aⅴ| 久久精品中文字幕一区| 国产精品区一区二区三| 在线视频精品一| 中日韩美女免费视频网站在线观看| 久热成人在线视频| 免费久久精品视频| 亚洲国产精品久久久久| 免费在线观看日韩欧美| 欧美国产高清| 亚洲精品一区二区三区樱花 | 免费亚洲电影在线| 欧美电影资源| 亚洲欧洲日韩综合二区| 欧美成人有码| 亚洲乱码视频| 欧美一区2区三区4区公司二百| 国产精品乱人伦一区二区| 亚洲网站视频福利| 欧美一区二区三区在线观看视频| 国产欧美日韩在线视频| 欧美在线黄色| 欧美不卡一区| 一本一本久久| 国产毛片久久| 另类专区欧美制服同性| 亚洲片在线资源| 午夜精品久久久久99热蜜桃导演| 国产视频一区免费看| 久久久久国色av免费观看性色| 欧美激情精品久久久六区热门| 99精品久久| 国产精品一区二区女厕厕| 久久成人精品视频| 91久久久在线| 欧美一区91| 亚洲高清影视| 国产精品av一区二区| 欧美一区二区三区视频| 亚洲东热激情| 性视频1819p久久| 在线观看成人一级片| 欧美日韩精品一本二本三本| 亚洲欧美日韩成人| 欧美激情aaaa| 午夜在线视频观看日韩17c| 亚洲成人在线网| 国产精品hd| 另类尿喷潮videofree| 亚洲图片激情小说| 欧美激情亚洲一区| 欧美中文在线视频| 99在线视频精品| 狠狠干狠狠久久| 欧美日韩一区二区视频在线 | 老牛嫩草一区二区三区日本| 日韩天堂在线观看| 美女主播一区| 翔田千里一区二区| 一本一道久久综合狠狠老精东影业| 国产精品制服诱惑| 欧美久久婷婷综合色| 久久久中精品2020中文| 亚洲伊人一本大道中文字幕| 亚洲国产91色在线| 葵司免费一区二区三区四区五区| 亚洲一区二区三区三| 亚洲欧洲一区二区三区在线观看| 国产精品综合视频| 欧美视频在线观看一区| 欧美激情一区二区三区| 久久久青草婷婷精品综合日韩 | 西西人体一区二区| 亚洲视频免费看| 亚洲人成绝费网站色www| 激情综合电影网| 国产欧美午夜| 国产精品入口麻豆原神| 欧美视频国产精品| 欧美日韩精品一区二区在线播放 | 国产精品白丝jk黑袜喷水| 欧美激情亚洲国产| 欧美777四色影视在线| 美女诱惑一区| 噜噜噜躁狠狠躁狠狠精品视频| 久久久久久久999| 久久激情五月丁香伊人| 久久精品午夜| 久久久精品999| 久久综合福利| 欧美成年人网| 欧美日韩久久| 欧美日韩中文字幕精品| 欧美日韩一区二区国产| 欧美日本精品一区二区三区| 欧美欧美在线| 欧美日本久久| 国产精品扒开腿做爽爽爽软件| 国产精品扒开腿爽爽爽视频| 国产精品国产精品| 国产欧美精品一区二区色综合 | 国产欧美精品日韩精品| 国产精品一二三四区| 国产一区二区成人| 在线播放精品| 99riav1国产精品视频| 亚洲小视频在线| 欧美一级夜夜爽| 麻豆成人在线| 亚洲电影免费观看高清完整版在线观看| 欧美激情欧美激情在线五月| 亚洲乱码一区二区| 亚洲一区在线免费观看| 香蕉av777xxx色综合一区| 久久婷婷麻豆| 欧美乱人伦中文字幕在线| 国产精品视频一区二区高潮| 国产一区二区三区在线观看精品 | 亚洲欧美影音先锋| 久久精品一区二区三区四区| 欧美成人一二三| 国产精品乱码妇女bbbb| 韩日欧美一区| 一区二区三区产品免费精品久久75 | 亚洲精品日韩在线观看| 亚洲欧美日韩在线播放| 欧美成人一品| 国产欧美精品| 99re国产精品| 久久在线视频| 一本大道久久a久久精二百| 欧美在线视频一区| 欧美日韩亚洲系列| 黄色日韩网站视频| 亚洲无玛一区| 欧美风情在线| 欧美亚洲免费在线| 欧美日韩免费观看一区二区三区 | 久久激情五月婷婷| 亚洲精品国产欧美| 久久aⅴ国产紧身牛仔裤| 欧美日韩免费观看一区三区 | 欧美专区福利在线| 亚洲精品看片| 久久婷婷一区| 国产日本欧美一区二区| 在线视频你懂得一区二区三区| 美女国产精品| 亚洲人成绝费网站色www| 亚洲综合第一| 亚洲国产va精品久久久不卡综合| 午夜电影亚洲| 欧美视频一区二区三区…| 亚洲国产精品传媒在线观看 | 欧美在线免费视屏| 国产精品久久午夜| 一本色道久久综合亚洲精品婷婷 | 亚洲第一伊人| 久久国产精品久久久| 99热在这里有精品免费| 欧美大片在线看免费观看| 国内综合精品午夜久久资源| 午夜在线精品偷拍| 一区二区三区产品免费精品久久75 | 免费影视亚洲| 亚洲二区视频| 欧美电影在线| 免费观看成人www动漫视频| 精品69视频一区二区三区| 久久九九精品| 欧美一级淫片aaaaaaa视频| 国产欧美精品一区二区色综合 | 欧美风情在线| 久久久久久久久久久一区| 国产在线精品自拍| 久久亚洲精品一区| 久久精品网址| 亚洲福利一区| 欧美激情亚洲视频| 欧美激情综合五月色丁香| 亚洲久久一区| 亚洲免费电影在线| 国产精品区一区二区三区| 欧美综合激情网| 久久高清国产|