zoukankan      html  css  js  c++  java
  • HDU1251 统计难题 (字典树模板)题解

    思路:模板题,贴个模板

    代码:

    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<queue>
    #include<cmath>
    #include<string>
    #include<stack> 
    #include<set>
    #include<map>
    #include<vector>
    #include<iostream>
    #include<algorithm>
    #include<sstream>
    #define ll long long
    const int N=1000000;
    const int INF=1e9;
    using namespace std;
    struct Trie{
    	int num;
    	Trie *next[26];
    	Trie(){
    		num=0;
    		for(int i=0;i<26;i++){
    			next[i]=NULL;
    		}
    	}
    };
    Trie *root=new Trie();
    
    void insert(char *s){
    	int len=strlen(s);
    	Trie *p=root;
    	for(int i=0;i<len;i++){
    		int v=s[i]-'a';
    		if(p->next[v]==NULL){	//没有这个前缀,开辟空间
    			p->next[v]=new Trie();	
    		}
    		p=p->next[v];
    		p->num++;
    	}
    }
    int query(char *s){
    	int len=strlen(s);
    	Trie *p=root;
    	for(int i=0;i<len;i++){
    		int v=s[i]-'a';
    		if(p->next[v]==NULL) return 0;
    		p=p->next[v];
    	}
    	return p->num;
    }
    int main(){
    	int c,n,flag;
    	char s[15];
    	while(true){
    		n=0;
    		while((c=getchar())!='
    '){
    			s[n++]=c;
    			flag=0;
    		}
    		if(flag) break;
    		s[n]='';
    		insert(s);
    		flag=1;
    	}
    	while(~scanf("%s",s)){
    		int ans=query(s);
    		printf("%d
    ",ans);
    	}
        return 0;  
    }  

  • 相关阅读:
    app接口开发(php)
    eclipse JRE(unbound)问题
    HTTP状态码详解
    HTTP方法
    项目开发注意事项及技巧
    JavaWeb 路径问题
    POJ 3264 Balanced Lineup(RMQ_ST)
    了解NoSQL
    多表查询(章节摘要)
    ios UITableView 获取点击cell对象
  • 原文地址:https://www.cnblogs.com/KirinSB/p/9409095.html
Copyright © 2011-2022 走看看