zoukankan      html  css  js  c++  java
  • UVa 10815

    题目:统计单词。

    分析:字符串处理、字典树。比较裸的字典树,建树输出即可。

    注意:库iostream中没有gets。万恶的CE,╮(╯▽╰)╭。

    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    
    //Trie
    typedef struct node1
    {
    	bool   flag;
    	node1 *next[26];
    }tnode;
    tnode dict[50000];
    
    class Tire
    {
    		tnode* root;
    		int    size;
    		char   save[201];
    	public:
    		Tire() {size = 0;root = newnode();}
    		int ID( char ch ) {
    			if ( ch <= 'Z' ) return ch-'A';
    			else return ch-'a';
    		}
    		//构造新节点 
    		tnode* newnode() {
    			for ( int i = 0 ; i < 26 ; ++ i )
    				 dict[size].next[i] = NULL;
    			dict[size].flag = false;
    			return &dict[size ++]; 
    		}
    		//单词插入 
    		void insert( char* word, int len ) {
    			tnode *now = root;
    			for ( int i = 0 ; i < len ; ++ i ) {
    				if ( !now->next[ ID(word[i]) ] )
    					now->next[ ID(word[i]) ] = newnode();
    				now = now->next[ ID(word[i]) ];
    			}now->flag = true;
    		}
    		//利用dfs遍历输出 
    		void output( tnode* r, int d ) {
    			if ( r->flag ) {
    				save[d] = 0;puts(save);
    			}
    			for ( int i = 0 ; i < 26 ; ++ i )
    				if ( r->next[i] ) {
    					save[d] = i+'a';
    					output( r->next[i], d+1 );
    				}
    		}
    		void output(){ output(root,0); }
    };
    //Tire end
    
    int main()
    {
    	char buf[201],sav[201];
    	Tire tire;
    	while ( gets(buf) ) {
    		int len = strlen(buf);
    		int cou = 0;
    		for ( int i = 0 ; i <= len ; ++ i )
    			if ( (buf[i] >= 'a' && buf[i] <= 'z') ||
    				 (buf[i] >= 'A' && buf[i] <= 'Z') )
    				sav[cou ++] = buf[i];
    			else if ( cou ) {
    				sav[cou] = 0;
    				tire.insert( sav, cou );
    				cou = 0;
    			}
    	}
    	tire.output();
    	return 0;
    }
    
  • 相关阅读:
    区块链技术驱动金融.mobi
    ProcessExplorer 工具下载
    免费的论文查重网站
    接口可以继承接口吗?
    比较中的自动拆装箱
    Java语言中的异常处理
    Java类加载过程
    通过反射访问父类的私有成员
    final关键字详解
    MVC 控制台 +log4net 存入数据库
  • 原文地址:https://www.cnblogs.com/james1207/p/3362241.html
Copyright © 2011-2022 走看看