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

pku1223 DEHUFF 哈夫曼樹確定,PKU1261簡化版

題目描述:
一個哈夫曼樹,給出一個字符串以及編碼,要求確定哈夫曼樹
如果無解或者多解,輸出MULTIPLE TABLES

解法:
同pku1261,那題我寫了詳細的報告,http://www.shnenglu.com/yzhw/archive/2011/01/11/138368.aspx

代碼:
  1# include <cstdio>
  2# include <cstring>
  3# include <stack>
  4using namespace std;
  5struct node
  6{
  7    int count;
  8    node *c[2];
  9    node *pre;
 10    char end;
 11    node()
 12    {
 13        count=0;
 14        c[0]=c[1]=pre=NULL;
 15        end=0;
 16    }

 17}
;
 18node *head=NULL,*ans[27],*res[27];
 19char str[1024],code[1024];
 20int count,total;
 21bool used[27],hasfind;
 22void clear(node *p=head)
 23{
 24    if(!p) return;
 25    clear(p->c[0]);
 26    clear(p->c[1]);
 27    delete p;
 28}

 29void init()
 30{
 31    clear();
 32    head=new node();
 33    head->count=1;
 34    memset(used,0,sizeof(used));
 35    memset(ans,0,sizeof(ans));
 36    count=2;
 37    hasfind=false;
 38}

 39bool solve(int p1,int p2,node *p=head)
 40{
 41    if(count>total||p->end) return 0;
 42    else if(str[p1]=='\0'&&code[p2]=='\0'
 43    {
 44        if(!hasfind)
 45        {
 46            hasfind=true;
 47            memcpy(res,ans,sizeof(ans));
 48            return 0;
 49        }

 50        else return 1;
 51    }

 52    else if(str[p1]=='\0'return 0;
 53    else if(str[p1]==' '&&ans[26]||str[p1]!=' '&&ans[str[p1]-'A'])
 54    {
 55        stack<int> s;
 56        node *t=ans[str[p1]==' '?26:str[p1]-'A'];
 57        while(t->pre)
 58        {
 59            s.push(t->pre->c[0]==t?0:1);
 60            t=t->pre;
 61        }

 62        for(;code[p2]!='\0'&&!s.empty();p2++)
 63            if(code[p2]==s.top()+48)
 64                s.pop();
 65            else return 0;
 66        if(!s.empty()) return 0;
 67        else return solve(p1+1,p2);
 68    }

 69    else
 70    {
 71        p->count++;
 72        if(p->count==1)
 73        {
 74            p->end=str[p1];
 75            ans[str[p1]==' '?26:str[p1]-'A']=p;
 76            if(solve(p1+1,p2)) return 1;
 77            p->end=0;
 78            ans[str[p1]==' '?26:str[p1]-'A']=NULL;
 79        }

 80        if(code[p2]=='\0')
 81        {
 82            p->count--;
 83            return 0;
 84        }

 85        if(p->count==1)
 86            count++;
 87        if(p->c[code[p2]-'0']==NULL)
 88        {
 89            p->c[code[p2]-'0']=new node();
 90            p->c[code[p2]-'0']->pre=p;
 91        }

 92        if(solve(p1,p2+1,p->c[code[p2]-'0'])) return 1;
 93        if(p->count==1)
 94            count--;
 95        p->count--;
 96        return 0;
 97        
 98    }

 99}

100int main()
101{
102    //freopen("ans.txt","w",stdout);
103    int test;
104    scanf("%d",&test);
105    getchar();
106    for(int t=1;t<=test;t++)
107    {
108        init();
109        gets(str);
110        gets(code);
111        total=0;
112        for(int i=0;str[i]!='\0';i++)
113            used[str[i]==' '?26:str[i]-'A']=true;
114        for(int i=0;i<27;i++)
115            total+=used[i];
116        printf("DATASET #%d\n",t);
117       if(solve(0,0)||!hasfind) printf("MULTIPLE TABLES\n");
118       else if(hasfind)
119       {
120           if(used[26])
121           {
122               printf("  = ");
123               stack<int> s;
124               while(res[26]->pre)
125               {
126                   s.push(res[26]==res[26]->pre->c[0]?0:1);
127                   res[26]=res[26]->pre;
128               }

129               while(!s.empty())
130               {
131                   printf("%d",s.top());
132                   s.pop();
133               }

134               printf("\n");
135           }

136           
137               for(int i=0;i<26;i++)
138                   if(used[i])
139                   {
140                       printf("%c = ",i+65);
141                       stack<int> s;
142                       while(res[i]->pre)
143                       {
144                           s.push(res[i]==res[i]->pre->c[0]?0:1);
145                           res[i]=res[i]->pre;
146                       }

147                       while(!s.empty())
148                       {
149                           printf("%d",s.top());
150                           s.pop();
151                       }

152                       printf("\n");
153                   }

154       }

155
156    }

157    return 0;
158}

posted on 2011-01-16 14:01 yzhw 閱讀(248) 評論(0)  編輯 收藏 引用 所屬分類: searchdata struct

<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

導航

統計

公告

統計系統

留言簿(1)

隨筆分類(227)

文章分類(2)

OJ

最新隨筆

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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麻豆的观看方式| 欧美日韩色婷婷| 亚洲电影专区| 狠狠色综合网| 亚洲欧美日韩中文视频| 一本色道婷婷久久欧美| 男人的天堂亚洲| 久久这里只有精品视频首页| 国产精品一区久久久| 一本色道久久综合狠狠躁的推荐| 亚洲精品在线免费观看视频| 裸体歌舞表演一区二区| 欧美成黄导航| 亚洲丁香婷深爱综合| 久久久久久久久久久久久9999| 香蕉成人伊视频在线观看| 欧美性久久久| 在线一区二区日韩| 亚洲尤物在线视频观看| 欧美日韩在线精品一区二区三区| 亚洲人永久免费| 一二三区精品福利视频| 欧美日韩hd| 一本色道综合亚洲| 午夜免费在线观看精品视频| 国产精品国产三级国产aⅴ浪潮| 一本色道久久综合精品竹菊| 中日韩美女免费视频网址在线观看 | 欧美激情久久久久| 亚洲日本中文字幕免费在线不卡| 99精品国产一区二区青青牛奶 | 国产欧美日韩中文字幕在线| 午夜精品久久久久久久久| 久久国产黑丝| 国自产拍偷拍福利精品免费一| 久久人人九九| 亚洲人成网站影音先锋播放| 在线一区二区日韩| 国产精品日韩欧美综合| 久久国产精品72免费观看| 美女脱光内衣内裤视频久久影院 | 欧美在线一级视频| 韩日欧美一区| 欧美精品日韩综合在线| 亚洲天堂av在线免费观看| 欧美尤物一区| 亚洲国产精品尤物yw在线观看 | 欧美三级视频在线观看| 午夜免费在线观看精品视频| 免费不卡在线观看| 一区二区精品国产| 国产一区91| 欧美精品xxxxbbbb| 亚洲中无吗在线| 欧美成人久久| 亚洲欧美视频| 亚洲欧洲精品一区二区三区不卡| 欧美涩涩视频| 久久亚洲国产精品日日av夜夜| 亚洲人人精品| 久久久久欧美| 亚洲一区二区精品| 依依成人综合视频| 国产精品av一区二区| 久久一区二区三区四区| 一区二区三区成人精品| 久久影院午夜论| 亚洲欧美日韩国产| 亚洲国产精品va| 国产精品亚洲精品| 欧美日本韩国一区二区三区| 久久国产日本精品| 亚洲先锋成人| 91久久在线播放| 久久综合五月天婷婷伊人| 亚洲无限乱码一二三四麻| 亚洲高清av| 国产亚洲精品美女| 国产精品福利久久久| 欧美国产第二页| 久久久久国产一区二区| 中文欧美在线视频| 亚洲啪啪91| 欧美14一18处毛片| 久久精品一区蜜桃臀影院| 亚洲欧美在线高清| 亚洲午夜成aⅴ人片| 亚洲日本在线观看| 亚洲电影在线免费观看| 黄色成人在线| 黄色小说综合网站| 国产一区二区三区四区五区美女 | 99国产精品国产精品久久| 欧美高清在线视频观看不卡| 久久久夜精品| 久久网站免费| 老司机一区二区| 久久一综合视频| 久久综合狠狠| 麻豆91精品| 免费影视亚洲| 欧美成人国产va精品日本一级| 美日韩精品免费| 免费观看亚洲视频大全| 久久人人九九| 欧美成人亚洲成人| 欧美成人综合一区| 亚洲国产专区| 亚洲精品久久嫩草网站秘色| 亚洲国产天堂网精品网站| 亚洲国产成人久久综合| 亚洲第一二三四五区| 亚洲黄色成人网| 亚洲精品免费在线| 一区二区三区四区国产| av不卡在线观看| 亚洲一区二区视频在线| 香蕉国产精品偷在线观看不卡| 欧美亚洲视频在线观看| 欧美在现视频| 麻豆国产精品777777在线| 欧美激情1区2区3区| 欧美日韩午夜视频在线观看| 国产精品成人午夜| 狠狠爱www人成狠狠爱综合网| 影音先锋中文字幕一区| 99re6这里只有精品| 亚洲影视在线播放| 久久综合狠狠| 99国产精品视频免费观看| 亚洲一区二区三区精品在线 | 欧美午夜精彩| 国产日韩一区二区三区在线| 国内精品久久久久久影视8 | 一区二区三区在线观看视频| 136国产福利精品导航网址| 亚洲精品中文在线| 小黄鸭精品密入口导航| 欧美69wwwcom| 国产精品99久久久久久宅男| 欧美专区一区二区三区| 欧美激情在线狂野欧美精品| 国产精品亚洲不卡a| 亚洲国产精品久久久久秋霞蜜臀| 亚洲在线视频网站| 欧美国产精品一区| 亚洲一区二区三区四区视频| 美女网站久久| 国产欧美一区二区精品性色| 亚洲三级免费观看| 欧美在线二区| 一区二区三区四区五区视频| 久久综合中文色婷婷| 国产精品美女主播在线观看纯欲| 18成人免费观看视频| 香蕉久久夜色精品国产| 亚洲日本欧美| 久久夜色精品国产欧美乱| 国产欧美亚洲日本| 亚洲图片自拍偷拍| 亚洲福利视频二区| 久久久久se| 国产亚洲精品bt天堂精选| 在线亚洲电影| 亚洲国产一区视频| 久久亚洲精品网站| 好看的av在线不卡观看| 亚洲欧美美女| 一区二区电影免费在线观看| 欧美成人午夜剧场免费观看| 国产一区二区三区奇米久涩| 午夜欧美精品| 中国亚洲黄色| 欧美视频在线看| 在线视频中文亚洲| 亚洲精品免费在线| 欧美精品久久天天躁| 亚洲日本成人女熟在线观看| 美女日韩在线中文字幕| 欧美主播一区二区三区美女 久久精品人 | 在线观看亚洲专区| 久久精品一区二区三区不卡牛牛 | 久久久久久久久久久久久久一区 | 亚洲电影免费观看高清完整版在线观看 | 亚洲国产一区二区三区在线播| 久久精品国产精品亚洲综合 | 欧美中文字幕第一页| 国产精品一区二区女厕厕| 亚洲综合首页| 亚洲一区日本| 国产精品综合网站| 久久久久久91香蕉国产| 欧美与黑人午夜性猛交久久久| 国模大胆一区二区三区| 久久免费黄色| 欧美a级片网|