Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:前排提示:这道题不能使用字典树做In Reply To:前排提示:这道题不能使用字典树做 Posted by:kkksc03 at 2017-02-06 16:33:24 字典树代码,速度慢了点,7600ms #include <iostream> #include <stdio.h> #include <string.h> #define XX 100 using namespace std; class leaf{ public: int cnt; leaf *p[XX]; leaf(){ cnt = 0; memset(p,0,sizeof(p)); } }; char ret[30],a; int retcnt=0,all=0; leaf *root,*L; void DFS(leaf *L) { if(L!=root&&L->cnt) { for(int i=0; i<retcnt; i++)cout<<ret[i]; cout<<' '; printf("%.4f\n",(double)L->cnt/all*100); } for(int i=0;i<XX;i++){ if(L->p[i]==0)continue; ret[retcnt] = ' '+i; retcnt++; DFS(L->p[i]); retcnt--; } } int main() { L = root = new leaf(); string s; while(getline(cin,s)){ if(s=="")continue; string::iterator start = s.begin(); while(start<s.end()){ a = *start; start++; if(L->p[a-' ']!=0)L = L->p[a-' ']; else L = L->p[a-' '] = new leaf(); } L->cnt++; if(L!=root) all++; L=root; } DFS(root); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator