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

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

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

解法:
同pku1261,那題我寫了詳細的報告,http://m.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 閱讀(244) 評論(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不卡| 老司机一区二区三区| 99精品视频免费| 亚洲乱码久久| 欧美在线亚洲在线| 亚洲色诱最新| 亚洲综合精品一区二区| 一区二区日本视频| 亚洲在线视频| 久久久久久久激情视频| 欧美fxxxxxx另类| 亚洲国内自拍| 亚洲精品一区二区三区av| 亚洲日本乱码在线观看| 一区二区三区欧美激情| 亚洲影院色无极综合| 国产永久精品大片wwwapp| 国内精品模特av私拍在线观看| 国内精品久久久久影院优| 亚洲国产日韩欧美一区二区三区| 亚洲精品综合在线| 欧美在线一二三区| 亚洲国产精品一区二区www在线 | 欧美亚洲成人精品| 国产日韩欧美在线观看| 亚洲精品免费在线播放| 久久精品视频一| 中文国产一区| 欧美日韩一区二区免费在线观看| 亚洲二区在线视频| 久久久99精品免费观看不卡| 亚洲日本在线观看| 久久综合伊人| 亚洲国产成人av在线| 久久九九国产精品| 亚洲自拍偷拍一区| 国产精品www994| 亚洲在线免费观看| 亚洲一级免费视频| 国产精品久久午夜| 亚洲欧美综合另类中字| 一区二区三区国产精华| 欧美三级韩国三级日本三斤| 99精品国产99久久久久久福利| 亚洲三级免费电影| 欧美日韩精品一本二本三本| 一区二区三区四区五区在线| 日韩午夜三级在线| 亚洲国产精品一区二区第一页| 蜜臀久久99精品久久久画质超高清| 亚洲精品乱码| 亚洲一区在线观看视频| 国产日韩一区二区| 欧美国产日韩二区| 国产精品中文字幕欧美| 久久久噜噜噜久噜久久| 欧美国产日韩一区二区| 亚洲一级黄色| 免费日韩成人| 久久精品欧美| 国产精品精品视频| 欧美大胆人体视频| 国产片一区二区| 亚洲欧洲一区二区三区| 国产麻豆91精品| 亚洲啪啪91| 国外成人在线视频| 亚洲国产精品久久人人爱蜜臀| 欧美人体xx| 麻豆久久精品| 国产精品视频1区| 欧美成在线视频| 中日韩男男gay无套| 国产精品丝袜白浆摸在线| 久久嫩草精品久久久精品一| 久久久亚洲国产天美传媒修理工| 亚洲欧美一区二区三区在线| 久久久久综合网| 欧美jizz19hd性欧美| 伊人久久大香线蕉综合热线 | 一区二区三区日韩精品视频| 亚洲一区精品在线| 欧美日本免费| 亚洲经典在线| 欧美大片国产精品| 免费视频久久| 久久久久久亚洲精品不卡4k岛国| 亚洲精品一区二区在线观看| 美女日韩在线中文字幕| 久久精品一区二区三区不卡牛牛| 欧美四级剧情无删版影片| 亚洲影音一区| 久久久久**毛片大全| 亚洲国产成人精品久久| 欧美人与性动交α欧美精品济南到| 亚洲经典自拍| 一区二区日韩| 一色屋精品亚洲香蕉网站| 久久久国产一区二区三区| 久久露脸国产精品| 亚洲精品美女在线观看| 国产精品成人观看视频免费| 久久久亚洲国产美女国产盗摄| 91久久夜色精品国产九色| 欧美一区二区三区在线看| 亚洲大胆人体在线| 国产精品乱看| 国产精品一区久久久久| 免费在线看一区| 久久久久免费视频| 翔田千里一区二区| 亚洲蜜桃精久久久久久久| 欧美电影资源| 久热精品视频在线观看一区| 欧美综合第一页| 久久成人精品无人区| 香蕉乱码成人久久天堂爱免费 | 一区二区三区在线免费播放| 欧美gay视频| 美腿丝袜亚洲色图| 欧美福利视频在线观看| 免费短视频成人日韩| 久久九九久久九九| 久久亚洲春色中文字幕| 久久人91精品久久久久久不卡 | 亚洲国产精品久久久久婷婷884| 国产在线不卡精品| 国精产品99永久一区一区| 在线观看一区欧美| 中文精品在线| 久久久国产精品一区| 欧美日韩国产小视频| 国产精品女同互慰在线看| 国产亚洲精品综合一区91| 1000部国产精品成人观看| 亚洲美女毛片| 久久久久久久网站| 亚洲精品欧美极品| 欧美在现视频| 国产精品精品视频| 日韩视频一区二区在线观看| 久久国产乱子精品免费女 | 黄色成人av网| 亚洲人永久免费| 久久久综合网| 午夜精品久久久久久久久久久久 | 亚洲国产精品一区二区第四页av| 亚洲精品孕妇| 欧美freesex交免费视频| 麻豆精品在线视频| 午夜精品久久久久久久99樱桃 | 欧美韩日亚洲| 性娇小13――14欧美| 国产精品久久久久久久久动漫 | 欧美高清视频在线观看| 在线成人www免费观看视频| 久久爱www| 久久久一区二区三区| 国产一区二区三区久久久| 欧美亚洲日本国产| 亚洲影院高清在线| 国产一区在线看| 亚洲激情不卡| 欧美精品videossex性护士| 亚洲国产视频一区二区| 亚洲第一黄色网| 欧美人与禽猛交乱配| 午夜精品久久久久久久99樱桃| 亚洲一区二区视频| 1024成人| 亚洲视频你懂的| 韩国三级电影久久久久久| 欧美1区2区| 国产日韩欧美一区二区三区在线观看 | 国产精品毛片大码女人 | 在线成人激情视频| 亚洲激情第一页| 国产一区二区在线观看免费播放| 牛牛影视久久网| 国产日韩欧美精品| 中文国产一区| 99在线精品视频| 欧美黑人多人双交| 免费观看亚洲视频大全| 国产日韩欧美中文在线播放| 亚洲精选一区二区| 亚洲日本中文字幕区| 久久一区国产| 欧美成人自拍| 久久国产精品99国产精| 亚洲男人影院| 国产精品久久999| 宅男精品视频| 亚洲综合国产激情另类一区| 欧美精品97| 日韩亚洲精品在线| 亚洲调教视频在线观看| 欧美日韩视频在线一区二区 | 欧美一区二区在线观看| 欧美精品亚洲二区|