uva 1556 - Disk Tree(字典樹)

來源:互聯網
上載者:User

標籤:style   http   color   os   io   ar   for   檔案   sp   

題目串連:uva 1556 - Disk Tree

題目大意:給出N個目錄關係,然後按照字典序輸出整個檔案目錄。

解題思路:以每個目錄名作為字元建立一個字典樹即可,每個節點的關係可以用map最佳化。

#include <cstdio>#include <cstring>#include <map>#include <string>#include <iostream>#include <algorithm>using namespace std;const int maxn = 50005;typedef map<string, int>::iterator iter;struct Tire {    int sz;    map<string, int> g[maxn];    void init();    void insert(string s);    void put(int u, int d);}tree;int main () {    int n;    string s;    while (cin >> n && n) {        tree.init();        for (int i = 0; i < n; i++) {            cin >> s;            s += ‘\\‘;            tree.insert(s);        }        tree.put(0, 0);        cout << endl;    }    return 0;}void Tire::init() {    sz = 1;    g[0].clear();}void Tire::insert(string s) {    int u = 0;    string word = "";    for (int i = 0; i < s.length(); i++) {        if (s[i] == ‘\\‘) {            if (!g[u].count(word)) {                g[sz].clear();                g[u][word] = sz++;            }            u = g[u][word];            word = "";        } else            word += s[i];    }}void Tire::put (int u, int d) {    for (iter i = g[u].begin(); i != g[u].end(); i++) {        for (int j = 0; j < d; j++)            cout << " ";        cout << i->first << endl;        put(i->second, d + 1);    }}

uva 1556 - Disk Tree(字典樹)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.