`
xxx0624
  • 浏览: 31681 次
文章分类
社区版块
存档分类
最新评论

POJ3283+字典树

 
阅读更多

简单的字典树 模拟一遍。。


/*
字典树
构造字典树。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<math.h>
using namespace std;
typedef long long int64;
//typedef __int64 int64;
typedef pair<int64,int64> PII;
#define MP(a,b) make_pair((a),(b)) 
const int maxn = 53;
const int maxm = 100005;
const int inf = 0x7fffffff;
const double pi=acos(-1.0);
const double eps = 1e-8;

int a[ maxm ];
struct tree{
	tree* next[ maxn ];
	//bool lev;
};
tree root;
int tot;

int getval(char mod[],char aim)
{
    int i;
    for(i=0;mod[i];i++)
    {
        if(mod[i]==aim)return i;
    }
    return -1;
}

int getval(char s[])
{
    char value[15]="A234567891JQK";
    char suit[10]="CDHS";
    int a=getval(value,s[0]);
    int len=strlen(s);
    int b=getval(suit,s[len-1]);
    return a*4+b;
}

void init(){
	tot = 0;
	for( int i=0;i<maxn;i++ )
		root.next[i] = NULL;
	//printf("AC=%d\n",getval("AC"));
	//printf("AC=%d\n",getval("AD"));
	//printf("AC=%d\n",getval("AH"));
	//printf("AC=%d\n",getval("AS"));
	//printf("KS=%d\n",getval("KS"));
}

void build( int n ){
	tree *p = &root;
	tree *tmp;
	for( int i=1;i<=n;i++ ){
		if( p->next[ a[i] ]==NULL ){
			tmp = ( tree* )malloc( sizeof( root ) );
			//tmp->lev = true;
			for( int j=0;j<maxn;j++ ){
				tmp->next[j] = NULL;
			}
			p->next[ a[i] ] = tmp;
			p = p->next[ a[i] ];
			tot++;
		} 
		else{
			p = p->next[ a[i] ];
		}
	}
	return ;
}
			 
int main(){
	int m;
	//freopen("in.txt","r",stdin);
	//freopen("out.txt","w",stdout);
	while( scanf("%d",&m)&&m>0 ){
		int n;
		init();
		char tmp[ 12 ];
		for( int i=1;i<=m;i++ ){
			scanf("%d",&n);
			//printf("i=%d\n",i);
			for( int j=n;j>=1;j-- ){
				scanf("%s",tmp);
				a[ j ] = getval(tmp);
			}
			//for( int j=1;j<=n;j++ )
				//printf("%d ",a[j]);
			//printf("\n");
			build( n );
		}
		printf("%d\n",tot);
		//delete(&root);
	}
	return 0;
}


分享到:
评论

相关推荐

    字典树练习 POJ 1056

    标题中的“字典树练习 POJ 1056”是指一个编程问题,源自编程竞赛网站POJ(Programming Online Judge)的题目1056。POJ是一个在线平台,程序员可以在这里提交代码并测试其正确性,以解决给定的问题。这类问题通常...

    使用字典树和Hashtable两种方法解POJ 2503(JAVA)

    标题中的“使用字典树和Hashtable两种方法解POJ 2503”是指通过这两种数据结构解决一个特定的编程问题。POJ是Programming Online Judge的缩写,它是一个在线的编程竞赛平台,用户可以提交代码来解决特定的算法问题。...

    ACMer需要掌握的算法讲解 (2).docx

    ACM算法讲解 本文将对ACM主要算法进行讲解,涵盖了基本算法、图算法、数据结构、搜索、计算几何学、动态规划和综合题等多方面的知识点。... + 字典树 + 后缀数组、后缀树 + 块状链表 + 哈夫曼树

    POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类

    - **解释**:Trie树(字典树)是一种用于存储和检索字符串的高效数据结构。 ### 三、动态规划 #### 1. 基本动态规划 - **例题**:poj2488, poj3083, poj3009, poj1321, poj2251 - **解释**:基本动态规划问题通常...

    poj 2564 Edit Step Ladders 解题报告

    POJ 2564是一道经典的字符串处理题目,涉及到动态规划(DP)与字典树(Trie Tree)的综合运用。题目要求通过一系列编辑操作将一个字符串转换为另一个字符串,每一步编辑操作可以是插入、删除或替换一个字符,并且要...

    POJ2513-Colored Sticks【TrieTree+MergeSet+EulerPath】

    【标题】"POJ2513-Colored Sticks【TrieTree+MergeSet+EulerPath】"涉及的是一道编程竞赛题目,主要考察参赛者的数据结构与算法应用能力,特别是Trie树(字典树)、并查集(MergeSet)以及欧拉路径(Euler Path)这...

    acm训练计划(poj的题)

    6. **字典树(Trie)**: - (poj2513):一种高效的字符串检索数据结构。 ### 四、状态压缩 1. **状态压缩动态规划**: - (poj1837, poj1276):通过位运算来压缩状态,从而减少内存占用。 2. **背包问题**: - ...

    string-problem(POJ).rar_POJ 19_poj

    3. **POJ1951**:可能与字符串的排序有关,比如可以运用Manacher's Algorithm解决最长回文子串问题,或者需要理解并实现Trie(字典树)数据结构以优化字符串查找。 4. **POJ2003**:这可能是一个关于字符串编辑距离...

    POJ 分类题目 txt文件

    KMP算法用于在文本中查找模式字符串,AC自动机则适用于构建字符串匹配的字典树。例如,题目poj1961和poj2406就是KMP算法的应用实例。 ### 7. 几何算法 几何算法涉及点、线、面的性质和关系,如凸包、最近点对、...

    POJ2525-Text Formalization【TrieTree】

    今天我们要探讨的是一个名为"POJ2525-Text Formalization"的问题,它涉及到一种高效的数据结构——Trie树(也称为前缀树或字典树)。这个题目来源于北京大学的在线判题系统POJ,旨在考察程序员对字符串处理和Trie树...

    经典 的POJ 分类

    #### 字典树 (Trie) - **题目示例**: - POJ 2513:Trie树的基本构造与查询。 ### 编程技巧 #### C++模板应用 - **题目示例**: - POJ 3096、POJ 3007:模板函数与类的灵活使用。 #### 特殊数据结构 - **题目...

    poj(百练)题目分类

    - 字典树(Trie)的构建与查询。 - 字符串哈希的应用。 #### 3. 图论题 图论问题是算法竞赛中的重要组成部分,包括图的遍历、最短路径、最小生成树等问题。 - **知识点**: - 图的表示方法:邻接矩阵、邻接表。 -...

    POJ1035-Spell checker 测试数据

    9. **字典构建与搜索**:为了实现拼写检查,可能需要创建一个高效的字典结构,如Trie树或哈希表,以便快速查找和比较单词。 10. **性能优化**:在竞赛环境中,程序的运行速度也很关键,因此可能需要优化代码,使其...

    poj题目分类,关于acm/icpc

    2. **高级数据结构**:哈希表、堆(最大堆和最小堆)、 Trie 字典树、B树和B+树等。 3. **字符串处理**:模式匹配(KMP、Boyer-Moore、Rabin-Karp等)、字符串操作(子串查找、字符串比较等)。 4. **数学应用**:...

    POJ题目分类

    - **内容**: 字典树是一种高效的数据结构,主要用于存储字符串集合。 - **示例题目**: poj2513 - **知识点**: - **字典树的特点**:节省空间;查询速度快;方便实现自动补全功能。 #### 4. 哈希表 - **内容**: ...

    poj.grids.cn题型分类

    可以通过构建字典树或哈希表等方式来高效解决。 ##### 5. 棋盘分割 棋盘分割问题通常涉及将一个棋盘分割成若干个小区域,要求每个小区域满足一定的条件。可以通过动态规划定义状态`dp[i][j]`表示分割到第`i`行第`j...

    POJ2525–Text Formalization 测试数据

    在编程实践中,我们可以采用动态规划、贪心、分治等算法思想,结合数据结构如哈希表、Trie树、字典树等来提高效率。此外,利用已有的自然语言处理库,如NLTK、spaCy等,也可以简化某些步骤的实现。 总的来说,POJ...

    POJ3267-The Cow Lexicon

    这道题目主要涉及数据结构与算法的知识,特别是字符串处理和字典树(Trie)的应用。下面将详细阐述这个问题的背景、解题思路以及AC(Accepted)代码的关键部分。 ### 题目背景 在奶牛的世界里,它们也有自己的语言...

    ACMer需要掌握的算法讲解.docx

    ACMer 需要掌握的算法讲解 本资源摘要信息涵盖了 ACM 主要算法的介绍,包括基本算法、图算法、数据结构、搜索、计算几何学、动态规划、综合题等方面的...12. 字典树 13. 后缀数组、后缀树 14. 块状链表 15. 哈夫曼树

    ACM 题型

    - 字典树是一种高效的数据结构,用于存储大量字符串。 - 示例题目:poj2513 4. **哈希表** - **散列表的应用**:常用于快速查找、插入和删除操作。 - 示例题目:poj3349, poj3274, POJ2151, poj1840, poj2002, ...

Global site tag (gtag.js) - Google Analytics