相信很多人都做过这题目,你可以完全当做这是一条水题,但是最近在搞TRIE,就用TRIE来做。
首先,用map一次水掉了,不解释,当然也可以自己写一个map,如编程珠玑统计圣经单词那样做,一摸一样。
#include#include
10569813 | 2014-04-18 15:54:39 | Accepted | 15MS | 284K | C++ |
后来,我就拿着自己的trie树模板在改了,改了好多次,终于觉得没问题了,还是WA……
因为,其实我从来不会用char *,这次用了char * s,char sb[];s=sb,这样导致一直WA……为什么?我也不知道啊,我能说我从来都是用string么(求大神指导)……
后来,用了strcpy,第一次用啊……感觉自己好弱。
马上就AC了,世界就是这么神奇……
为什么乱码……今天开得是VC6,每次打开在linux写的就会这个样子……懒得改了,大家可以YY……
#include#include #include #include #include using namespace std;template struct trie_node{ bool terminable; //??????????? int node; //?????? int cnt; trie_node *child[Size]; //???? trie_node():terminable(false), node(0),cnt(0){ memset(child,0,sizeof(child)); //????? }};int maxN;char sb[30]; char s[30];template class trie{ public: //???? typedef trie_node node_type; typedef trie_node *link_type; //???? trie(Index i=Index()):index(i){ } //????,???? void clear(){ clear_node(root); for(int i=0;i bool insert(Iterator begin,Iterator end){ link_type cur= &root;//???????? while(begin!=end){ if(!cur->child[index[*begin]]){//??? cur->child[index[*begin]]=new node_type; cur->node++; } cur=cur->child[index[*begin]]; begin++; //??????! } cur->terminable=true; cur->cnt++; if(cur->cnt> maxN){ maxN=cur->cnt; // cout< t; //freopen("in.txt","r",stdin); int n; while(scanf("%d",&n)&&n) { maxN=-1; for(int i=0;i