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