(step5.2.1)hdu 1251(统计难题)

发布时间:2016-12-9 21:32:39 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"(step5.2.1)hdu 1251(统计难题)",主要涉及到(step5.2.1)hdu 1251(统计难题)方面的内容,对于(step5.2.1)hdu 1251(统计难题)感兴趣的同学可以参考一下。

题目大意:本题是中文题。可以直接在OJ上看 解题思路:其实就是求某个节点的使用的次数 代码如下: /* * 1251_3.cpp * * Created on: 2013年8月24日 * Author: Administrator */ #include <iostream> using namespace std; struct node{ int count; struct node* next[26]; }; node* root; node* newset(){ node* current; current = (node*)malloc(sizeof(node)); int i; for( i = 0 ; i < 26 ; ++i){\ current->next[i] = NULL; } current->count = 1; return current; } void insert(char* s){ node* current; int len = strlen(s); if(len == 0){ return ; } current = root; int i; for(i = 0 ; i < len ; ++i){ if(current->next[s[i] - 'a'] != NULL){ current = current->next[s[i] - 'a']; current->count = current->count + 1; }else{ current->next[s[i] - 'a'] = newset(); current = current->next[s[i] - 'a']; } } } int find(char* s){ node* current; int len = strlen(s); if(len == 0){ return 0; } current = root;//**** int i; for( i = 0 ; i < len ; ++i){ if(current->next[s[i] - 'a'] != NULL){ current = current->next[s[i] - 'a']; }else{ return 0; } } return current->count; } int main(){ char str[12]; root = newset(); int ans; while(gets(str) && str[0]!='\0'){ insert(str); } while(scanf("%s",str)!=EOF){ ans = find(str); printf("%d\n",ans); } }

上一篇:Java多线程(五)、多线程其他知识简要介绍
下一篇:个人开公司的流程,以后用得着(经典)

相关文章

相关评论