题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2072
题目概述:
给你一些句子,统计每个句子中单词的个数。
大致思路:
这个题有几种思路,一种是用Tire树,在插入单词过程中如果新建了一个节点便说明这个单词是新单词,需要注意的是有些单词可能是另一些的前缀,这里需要特殊处理一下。
还有就是STL了,map,set都行,因为我没有用STL就不细说了。
代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cmath> 5 #include <vector> 6 #include <ctime> 7 #include <map> 8 #include <queue> 9 #include <cstring> 10 #include <algorithm> 11 using namespace std; 12 13 #define sacnf scanf 14 #define maxn 10010 15 #define inf 1061109567 16 #define Eps 0.001 17 #define PI 3.1415927 18 #define mod 9973 19 #define MAXNUM 10000 20 void Swap(int &a,int &b) {int t=a;a=b;b=t;} 21 int Abs(int x) {return (x<0)?-x:x;} 22 typedef long long ll; 23 24 struct node 25 { 26 bool End; 27 node *next[26]; 28 } tire; 29 30 bool Insert(node *root,char *s2) 31 { 32 node *p=root;int t; 33 bool ans=false; 34 while(*s2!='