poj 3630 簡單Trie樹的應用

2021-09-08 20:34:53 字數 1743 閱讀 4067

學了trie樹(學習trie樹相關的內容,猛搓這!),來做這題,感覺挺簡單的,邊輸入邊判斷是否存在是否有字首(prefix),這樣的話要考慮兩種情況,一種是前面的某個串是該串的字首,或者該串是前面某個串的字首。   寫完,提交,tle!!原來不能用動態建樹的方法,必須用靜態樹! 後來再提交,wa。。。哎。糾結死我了。跟別人的對比了下,覺得自己的也沒錯啊...真不知道錯在哪了。下面貼出**,求大牛指導! 最後看了discuss裡面前輩給出的程式,把自己的改了下,是先排序,然後再insert,這樣可以少考慮一種情況。然後再把靜態樹的陣列開大點,不然還是會wa的!最後終於ac了。

ac**:

#include #include 

#include

using

namespace

std;

char str[10001][11

];const

int sunnum=10,base='0'

;struct

trienode[

1000000

];struct

phone

}p[10001

];int x=0

;bool

result;

trie *newtrie()

temp->terminal=false

;

return

temp;

}void insert(trie *root,phone cur)

}temp=temp->sun[k];

}temp->terminal=true;}

intmain()

sort(p,p+n); //

先排序 result=true

;

for(i=0; i)

if(result) printf("

yes\n");

else printf("

no\n");

}return0;

}

我糾結了好久,但總是wa的**。求大神指導!他們說的這組資料我也測試通過了。有沒有其他的資料來測試呢?22

112212

1

#include #include 

#include

using

namespace

std;

char str[10001][11

];const

int sunnum=10,base='0'

;struct

trienode[

1000000

];int x=0

;bool

result;

trie *newtrie()

temp->terminal=false

;

return

temp;

}bool insert(trie *root,char*s)

if(temp->sun[k]==null) temp->sun[k]=newtrie();

else

}temp=temp->sun[k];

s++;

}temp->terminal=true

;

return

false;}

intmain()

}if(i==n)

printf(

"yes\n");

}return0;

}

poj 3630 簡單Trie樹的應用

學了trie樹 學習trie樹相關的內容,猛搓這!來做這題,感覺挺簡單的,邊輸入邊判斷是否存在是否有字首 prefix 這樣的話要考慮兩種情況,一種是前面的某個串是該串的字首,或者該串是前面某個串的字首。寫完,提交,tle!原來不能用動態建樹的方法,必須用靜態樹!後來再提交,wa。哎。糾結死我了。跟...

POJ 3630 一道簡單的字典樹

刷刷更健康.這道題掌握了字典樹難度不大.關鍵是如何判斷是否有串是某串的字首 這個我是用個陣列記住每個字串末尾節點的位置 做的時候是經過乙個點就 1.最後只要判斷所有的末尾節點是不是都為1 如果都為1當然就說明沒有誰為誰的字首字串 反之就是有串是某串的字首字串 program includeusing...

POJ3630 trie字典樹水題

題意 給出一些 號碼,詢問是否某個 號碼是其他 號碼的字首,有輸出no,沒有輸出yes。顯然的字典樹。好久沒寫了,拿出來練練。借用了xffyjq大神的新申請結構體指標防爆寫法。注意是不是字首在主串之後輸入。include include include include using namespace...