每次询问给出的字符在词典中作为前缀的次数
解题思路: 建立词典的字典树
用w标记此结点在建树过程中访问的次数,每经过一次就+1
查询时把查询的字符遍历字典树,遍历最后结点的w值既是答案
代码:
#include#include #include #define MAX 1000000 struct snode{ char ch1; int next; //第二种写法 }Tree[MAX]; char ch[20]; int pd,Index,num[MAX],pre[MAX]; void Add_edge(int Star,char ch2) //建立有向图 { Tree[Index].ch1=ch2,Tree[Index].next=pre[Star]; num[Index]++; pre[Star]=Index++; } void DFS(int Star,int len,int Tlen) //DFS插入结点 { int i; if(len>Tlen) return ; for(i=pre[Star];i!=-1;i=Tree[i].next) { if(Tree[i].ch1==ch[len-1]) { num[i]++; if(len Tlen) return ; for(i=pre[Star];i!=-1;i=Tree[i].next) { if(Tree[i].ch1==ch[len-1]) { if(len==Tlen) { pd=num[i]; //num[ ]是w值 return ; } if(len