题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1305
题目概述:
给出几组编码,对于每组编码若存在编码i是编码j的前缀则输出not。
大致思路:
挺直白的tire树,不过我的做法并没有把所有编码插入树中,而是一边插入一边判断,出现not的情况之后所有编码都不需要进行处理了。
字符串类的题一定要注意输入处理!!!
字符串类的题一定要注意输入处理!!!
字符串类的题一定要注意输入处理!!!
重要的事情说三遍!!!
复杂度分析:略
代码:
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 5 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[maxn]; 28 } tire; 29 30 bool Insert(node *root,char *s) 31 { 32 node *p=root; 33 while(*s!='