標籤:
#include<cstdio>#include<cstring>#include<map>#include<string>#include<algorithm>using namespace std;int T;char s[100+10];char r[100+10];map<string,int>m;struct dan{ char s[100+10]; int num;}d[1000000+10];int sum;int tot;bool cmp(const dan&a,const dan&b){ if(a.num==b.num) return strcmp(a.s,b.s)<0; return a.num>b.num;}//轉小寫void F(){ for(int i=0;s[i];i++) if(s[i]>=‘A‘&&s[i]<=‘Z‘) s[i]=s[i]-‘A‘+‘a‘;}void work(){ int len=strlen(s); tot=0; for(int i=0;i<=len;i++) { if(s[i]>=‘a‘&&s[i]<=‘z‘) r[tot++]=s[i]; else { r[tot]=‘\0‘; if(strlen(r)>0) m[r]=-1; tot=0; } }}void work2(){ int len=strlen(s); tot=0; for(int i=0;i<=len;i++) { if(s[i]>=‘a‘&&s[i]<=‘z‘) r[tot++]=s[i]; else { r[tot]=‘\0‘; if(strlen(r)>0) { if(m[r]!=-1) { if(m[r]==0) strcpy(d[sum++].s,r); m[r]++; } } tot=0; } }}int main(){ scanf("%d",&T); while(T--) { int flag=0; m.clear(); sum=0; while(1) { scanf("%s",s); if(strcmp(s,"<oldwords>")==0) {flag=1;continue;} if(strcmp(s,"</oldwords>")==0) {flag=2;continue;} if(strcmp(s,"<article>")==0) {flag=3;continue;} if(strcmp(s,"</article>")==0) break; if(flag==1) { F(); work(); } if(flag==3) { F(); work2(); } } for(int i=0;i<sum;i++) d[i].num=m[d[i].s]; sort(d,d+sum,cmp); for(int i=0;i<min(10,sum);i++) printf("%s\n",d[i].s); printf("\n"); } return 0;}
電腦學院大學生程式設計競賽(2015’12) 1008 Study Words