zoukankan      html  css  js  c++  java
  • trie 树 模板

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cstdlib>
    #include <cmath>
    using namespace std;
    const int MAXN=5e6+5;
    int nume,n,m;
    char s[55],fff[4][20]={" ","OK","WRONG","REPEAT"};
    struct node{
    	int cnt,child[26];
    	bool end,vis;
    }trie[MAXN];
    void ins(){
    	int u=0,len=strlen(s);
    	for(int i=0;i<len;i++){
    		int v=s[i]-'a';
    		if(!trie[u].child[v]) trie[u].child[v]=++nume;
    		u=trie[u].child[v];
    		trie[u].cnt++;
    	}
    	trie[u].end=1;
    }
    int query(){
    	int len=strlen(s),u=0;
    	for(int i=0;i<len;i++){
    		int v=s[i]-'a';
    		if(!trie[u].child[v]) return 2;
    		u=trie[u].child[v];
    	}
    	if(!trie[u].end) return 2;
    	if(trie[u].vis) return 3;
    	trie[u].vis=1;
    	return 1;
    }
    int init(){
    	int rv=0,fh=1;
    	char c=getchar();
    	while(c<'0'||c>'9'){
    		if(c=='-') fh=-1;
    		c=getchar();
    	}
    	while(c>='0'&&c<='9'){
    		rv=(rv<<1)+(rv<<3)+c-'0';
    		c=getchar();
    	}
    	return fh*rv;
    }
    int main(){
    	freopen("in.txt","r",stdin);
    	n=init();
    	for(int i=1;i<=n;i++) {
    		scanf("%s",s);
    		ins();
    	}
    	m=init();
    	for(int i=1;i<=m;i++){
    		scanf("%s",s);
    		printf("%s
    ",fff[query()]);
    	}
    	fclose(stdin);
    	return 0;
    }
    
  • 相关阅读:
    解决SecureCRT连接linux终端中文显示乱码
    处理二维数组两题
    struts2校验总结
    专题:分治法
    常用表格编写
    写Action的三种方法
    Struts2入门-十分简单的登陆
    汉诺塔动画
    记录一下字符串处理的问题
    记录一些指针的应用方法
  • 原文地址:https://www.cnblogs.com/Mr-WolframsMgcBox/p/8007181.html
Copyright © 2011-2022 走看看