前缀树板子

记得每次输入样例时都要清空数组

此板子适用于求输入的字符串s有多少个(标准)

struct trie{
	int ch[maxn][80],cnt[maxn],idx;
	void build(){
		for(int i=0;i<=idx;i++){
			for(int j=0;j<79;j++){
				ch[i][j]=0;
			}
		}
		for(int i=0;i<=idx;i++){
			cnt[i]=0;
		}
		idx=0;
	}
	//ch[i][j]:记录从节点i走j的路径到达的节点编号 
	void insert(string s){
		int p=0;
		for(int i=0;i<s.size();i++){
			int j=s[i]-'0';
			if(!ch[p][j]){
				ch[p][j]=++idx;
			}
			p=ch[p][j];
		}
		cnt[p]++;
	}
	int query(string s){
		int p=0;
		for(int i=0;i<s.size();i++){
			int j=s[i]-'0';
			if(!ch[p][j])return 0;
			p=ch[p][j];
		}
		return cnt[p];
	} 
};
posted @ 2025-03-13 18:55  Marinaco  阅读(14)  评论(0)    收藏  举报
//雪花飘落效果