亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

UVA 12219 Common Subexpression Elimination (dfs瞎搞)

2019-11-08 01:35:48
字體:
來源:轉載
供稿:網友

大體題意:

給你一個字符串按照二叉樹的形式,用消除公共表達式的方法可以減少表達式樹上的的結點,輸出最少的結點的圖,詳細見原題。

思路:

寫的比較亂,感覺時間還行吧。借鑒一下吧。

先寫dfs 建樹,在寫個dfs2 從葉子結點向上更新父結點 重新標號,使得相同類的結點歸為一類。

在寫個dfs3,重新從根節點標號,變得有序。

最后PRint 函數  要么輸出數字 要么輸出字符串 討論一下即可。

#include <cstdio>#include <cstring>#include <algorithm>#include <unordered_map>#include <string>#include <map>#include <iostream>#define mr make_pair#define fi first#define se secondusing namespace std;const int maxn = 50000 + 7;char s[maxn*20];struct Node{    string t;    int fii,see;    Node(string t= "", int fii = -1,int see = -1):t(t),fii(fii),see(see){}    bool Operator < (const Node& rhs) const {        return fii < rhs.fii || (fii==rhs.fii && see < rhs.see) || (fii==rhs.fii && see == rhs.see && t < rhs.t);    }    bool operator == (const Node& rhs) const {        return t == rhs.t && fii == rhs.fii && see == rhs.see;    }};unordered_map<int,bool> mp;map< Node ,int >Hash;string node[maxn];int lch[maxn], rch[maxn],hash_id[maxn],tab[maxn],ord[maxn];int id, pos,cur,len;string t;void dfs(int c){    if (cur >= len) return;    t = s[cur];    while(cur + 1 < len && s[cur+1] != '(' && s[cur+1] != ')' && s[cur+1] != ','){        ++cur;        t+= s[cur];    }    node[c] = t;    cur++;    char ch = s[cur];    if (ch == ',') return;    if (ch == ')' || cur >= len ) {        ++cur;        return ;    }    if (cur < len && ch == '('){        id++;        lch[c] = id;        ++cur;        dfs(id);    }    ch = s[cur];    if (cur < len && ch == ','){        id++;        rch[c] = id;        ++cur;        dfs(id);    }    ch = s[cur];    if (cur < len && ch == ')'){        ++cur;        return;    }}void print(int c){    if (c == -1) return ;    if (mp.count(tab[c])){        printf("%d",tab[c]);        return;    }    printf("%s",node[c].c_str());    mp[tab[c]] = 1;    bool ok = !(lch[c] == -1 && rch[c] == -1);    bool ok2 = !(lch[c] == -1 || rch[c] == -1);    if (ok)printf("(");    print(lch[c]);    if (ok2)printf(",");    print(rch[c]);    if (ok)printf(")");}int fii,see;string tmp;void dfs2(int cur){    if (cur == -1) return;    dfs2(lch[cur]);    dfs2(rch[cur]);    if (lch[cur] == -1 && rch[cur] == -1){        Node u = Node(node[cur],-1,-1);        if (!Hash.count(u) ){            hash_id[cur] = id++;            Hash[u] = id-1;        }        else {            hash_id[cur] = Hash[u];        }        return;    }    if (lch[cur] == -1) fii = -1;    else fii = hash_id[lch[cur]];    if (rch[cur] == -1) see = -1;    else see = hash_id[rch[cur]];    tmp = node[cur];    Node u = Node(tmp,fii,see);    if (!Hash.count(u) ){        hash_id[cur] = id++;        Hash[u] = id-1;    }    else {        hash_id[cur] = Hash[u];    }}void dfs3(int c){    if (c == -1) return;    if (ord[hash_id[c] ] == -1){        tab[c] = id++;        ord[hash_id[c]] = id-1;    }    else {        tab[c] = ord[hash_id[c]];    }//    printf("^^ %d/n",tab[c]);    dfs3(lch[c]);    dfs3(rch[c]);}int main(){    int T;    scanf("%d%*c",&T);    while(T--){        memset(lch,-1,sizeof lch);        memset(rch,-1,sizeof rch);        memset(ord,-1,sizeof ord);        len = 0;        scanf("%s",s);        len = strlen(s);        id = pos = cur = 0;        mp.clear();        Hash.clear();        dfs(0);        id = 1;        dfs2(0);        id = 1;        dfs3(0);        print(0);        puts("");//        printf("&&& %d/n",mp[3]);    }    return 0;}/**3this(is(a,tiny),tree)a(b(f(a,a),b(f(a,a),f)),f(b(f(a,a),b(f(a,a),f)),f))z(zz(zzzz(zz,z),zzzz(zz,z)),zzzz(zz(zzzz(zz,z),zzzz(zz,z)),z))1a(b(f(a,a),b(f(a,a),f)),f(b(f(a,a),b(f(a,a),f)),f))**/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97久久精品在线| 91亚洲一区精品| 欧美极品xxxx| 97人人模人人爽人人喊中文字| 国产精品久久久久久久久久久不卡| 国产精品高潮视频| 亚洲女人被黑人巨大进入| 欧美视频裸体精品| 亚洲激情 国产| 欧美黑人视频一区| 日韩中文字幕在线免费观看| 日韩中文字幕在线看| 国产精品久久久久久五月尺| 国产精品嫩草影院久久久| 国产精品一区二区女厕厕| 日韩av在线免费观看一区| 成人激情视频免费在线| 久久久久久久香蕉网| 日韩精品视频免费在线观看| 在线观看欧美www| 国产精品亚洲片夜色在线| 欧美成人午夜激情在线| 欧美日韩亚洲一区二| 久久久人成影片一区二区三区| 91亚洲精品久久久| 国产美女精品视频| 欧美激情一二区| 久久久久久999| 久久久久久综合网天天| 成人春色激情网| 国产一区二区三区中文| 日韩一区二区三区国产| 欧美成人精品三级在线观看| 欧美大尺度在线观看| 亚洲精品国产suv| 午夜欧美大片免费观看| 国产亚洲成精品久久| 91亚洲精品久久久| 久久精品成人欧美大片古装| 亚洲精品99久久久久| 国产精品网红直播| 久久亚洲精品成人| 欧美高清视频在线| 欧美黄色www| 在线播放国产一区中文字幕剧情欧美| 欧美国产日韩在线| 久久人91精品久久久久久不卡| 久久国产精品久久久久久久久久| 91欧美精品午夜性色福利在线| 亚洲人免费视频| 亚洲精品电影在线观看| 伊人伊成久久人综合网站| 日韩中文字幕在线看| 日韩一区二区久久久| 国产精品视频白浆免费视频| 91九色视频导航| 最近更新的2019中文字幕| 91超碰caoporn97人人| 欧美在线视频a| 日韩精品中文字幕久久臀| 欧美成人h版在线观看| 尤物yw午夜国产精品视频| 国产成人一区二区| 国产97在线|日韩| 欧美国产日韩xxxxx| 国产成人午夜视频网址| 91高清免费视频| 欧美中文在线观看| 国产精品一区二区三区久久久| 欧美日韩国产中文字幕| 中文字幕精品www乱入免费视频| 国产激情999| 亚洲午夜性刺激影院| 亚洲欧美成人网| 国产精品美乳一区二区免费| 在线a欧美视频| 色妞久久福利网| 国产精品一区二区久久久| 91久久久久久国产精品| 亚洲视频在线观看视频| 欧美亚洲在线视频| 日韩日本欧美亚洲| 日韩大陆毛片av| 国语自产在线不卡| 2019国产精品自在线拍国产不卡| 欧美激情乱人伦一区| 亚洲色图综合久久| 色哟哟亚洲精品一区二区| 亚洲精品日韩激情在线电影| 91精品视频在线免费观看| 亚洲国内精品在线| 97超碰国产精品女人人人爽| 2019中文字幕免费视频| 欧美精品videossex88| 亚洲自拍偷拍一区| 国产福利成人在线| 日韩av手机在线观看| 中国日韩欧美久久久久久久久| 色悠久久久久综合先锋影音下载| 欧美午夜无遮挡| 久久久噜噜噜久久| 韩国三级日本三级少妇99| 国产精品美女在线观看| 亚洲另类欧美自拍| 在线观看日韩欧美| 亚洲欧美在线x视频| 日韩中文字幕国产| 亚洲在线视频福利| 国产精品自拍网| 日韩av在线影院| 91亚洲国产精品| 亚洲高清久久网| 欧美三级欧美成人高清www| 亚洲欧美激情另类校园| 欧美亚洲视频在线观看| 亚洲精品免费在线视频| 欧美尤物巨大精品爽| 亚洲的天堂在线中文字幕| 日韩欧美国产免费播放| 超碰日本道色综合久久综合| 在线亚洲国产精品网| 亚洲精品国产拍免费91在线| 日韩中文字幕在线视频| 亚洲a成v人在线观看| 国产精品福利小视频| 国产精品旅馆在线| 超碰97人人做人人爱少妇| 欧美黑人xxxx| 九色精品美女在线| 91久久精品视频| 欧美裸体男粗大视频在线观看| 菠萝蜜影院一区二区免费| 欧美色道久久88综合亚洲精品| 日韩在线观看免费| 欧美丰满老妇厨房牲生活| 亚洲视频777| 欧美日韩视频免费播放| 97久久超碰福利国产精品…| 欧美刺激性大交免费视频| 日韩激情第一页| 91精品综合久久久久久五月天| 国产精品视频自在线| 欧美激情在线观看视频| 视频在线观看一区二区| 欧美在线视频一区二区| 国产精品视频久久久| 伊人久久五月天| 久久99久国产精品黄毛片入口| 日韩av一区在线观看| 不卡毛片在线看| 色99之美女主播在线视频| 精品五月天久久| 国产91成人在在线播放| 亚洲国产古装精品网站| 欧美一区二区三区图| 日韩国产欧美精品在线| 日韩av大片在线| 久久久久久久久电影| 这里只有精品在线播放| 精品亚洲夜色av98在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 日本视频久久久| 国产一区欧美二区三区| 国产一区二区三区视频免费|