hdu 1671 字典樹《出現mle怎麼解決》

2022-05-13 17:36:34 字數 1580 閱讀 2892

一直覺得 指標版的 字典樹 各種好 直到這題 出現了mle之後 才發現 還是有點煩的=-=

但其實 解決的方法也蠻簡單的 只要寫了個deletetrie函式就好了

1

void deletetrie( trie*root )211

}

12delete root;

13return

;14 }

這裡 把我折磨了好久 當我寫完這個的時候 沒有再去 root = new trie一遍 導致一直 執行錯誤 找了好久 才發現 臥槽,。。

這題 就是給你n個字串 問是否其中某個字串是其他的字首 或者它自身是別人的字首

所以 就需要2個判斷 分別判斷自己是不是字首 和 別人是否成為自己的字首

--touch  me --

這裡用到的方法 和我上次用過的很像 設定乙個flag變數 表明 這個字串出現過了

1 #include 2 #include 3

using

namespace

std;45

bool

vis;

6const

int size = 10;7

struct

trie8;

12 trie*root;

1314

void init( trie*root )

1520 root->flag = -1;21

}2223void create( char* str , int

flag )

2437

else

if( p->next[id]->flag != -1)38

41 p = p->next[id];42}

43 p->flag =flag;

44for( int i = 0 ; i)

4551}52

}5354void deletetrie( trie*root )

5564

}

65delete root;

66return;67

}6869int

main()

7086

if( vis )

87 cout << "no"

<

88else

89 cout << "

yes"

<

90deletetrie(root);91}

92return0;

93 }

view code

其實 還可以有種方法避免自己再deletetrie後 忘記 root = new trie就是將 init函式的形參變下就好了

1

void init( trie*&root )

28 root->flag = -1

;9 }

這個形參的傳入 在鍊錶的學習的時候 經常用到..

today:

所謂成功 就是按你自己喜歡的方式 過完一生

每天 只要快樂 就足夠了

HDU 1671 字典樹 釋放記憶體

先解釋題意 給t組資料,每組資料有n個 號碼,要求每個 號碼不能是其他 號碼的字首,若滿足要求輸出yes 否則輸出no 一開始wa,看了下題解 覺得很複雜.且個人認為可以更簡單些。於是自己卡了半個小時 ac 這個故事告訴我們 不要總看題解,自己想的也不錯,這也是乙個acmer應有的品質吧 就兩個判斷...

Tire(字典樹)演算法題目 hdu 1671

題目大意 每組資料給n個號碼,假設某乙個 號碼恰好是另乙個 號碼的字首,那麼這組案例是失敗的,輸出no,因為它不能保證每個 都能撥打出去。題目本質就是尋找乙個字串是否恰好是另一字串的字首,若是,則輸出no 如下 include include include include include incl...

hdu 1251 字典樹入門

ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師交給ignatius統計的單詞,乙個空行...