hdu 2846 Repository
来源:互联网 发布:淘宝哪家银店真的吗 编辑:程序博客网 时间:2024/06/05 00:52
字典树变形题!很好的题~学会了很多!
#include <iostream>#include <stdio.h>#include <string.h>using namespace std;struct Trienode{ int cnt; int id; Trienode* next[26];};void insert(Trienode *root,char *s,int id){ Trienode *p = root; int i = 0; while(s[i]!='\0') { //cout<<i<<endl; int k = s[i]-'a'; if(p->next[k] == NULL) { Trienode *tmp = new Trienode; for(int j = 0;j < 26;j ++) tmp->next[j] = NULL;tmp->cnt = 0; tmp->id = -1; p->next[k] = tmp; } p = p -> next[k]; if(p->id!=id){ p->id = id; p->cnt ++; } i ++; }}int search(Trienode *root,char *s){ int i,k; Trienode *p = root; i = 0; while(s[i]!='\0') { k = s[i] - 'a'; if(p->next[k] == NULL) return 0; else p = p -> next[k]; i ++; } return p->cnt;}int main(){ char s[20]; Trienode *root = new Trienode; root ->cnt = 0; for(int j = 0;j < 26;j ++) root->next[j] = NULL; int n,q,i; while(scanf("%d",&n)!=EOF) { for(i = 0;i < n;i ++) { scanf("%s",&s); for(int j = 0;j < strlen(s);j ++) { insert(root,s+j,i); //cout<<s+j<<endl; } } scanf("%d",&q); while(q --) { scanf("%s",&s); printf("%d\n",search(root,s)); } } return 0;}
- hdu 2846 Repository
- hdu 2846 Repository
- HDU-2846-Repository
- hdu 2846 Repository
- HDU 2846 Repository
- hdu 2846 Repository
- HDU 2846 Repository
- hdu 2846 Repository(Trie)
- HDU 2846 Repository
- hdu 2846 Repository
- hdu(2846)Repository
- hdu 2846 Repository
- hdu 2846 Repository
- hdu 2846 Repository trie
- hdu 2846Repository
- 【HDU】 2846 Repository
- HDU【2846】Repository
- hdu-2846 Repository
- iphone上实现HTTP server
- 关于const 与 引用 在函数传参的时候 区别
- session丢失看来,真的是session_start放首位之问题
- iis7.5应用程序池自动停止
- C#之I/O系统(五)
- hdu 2846 Repository
- Java 基本数据类型
- 异常
- Android Library 工程实现模块复用
- vs2010低版本.net framework 转换为高版本后报错Error FileTracker : error FTK1011
- 内存映射文件 ---大数据量共享
- 随着窗口变大,div的左边距也拉大
- Difference between CSSDAGENT and CSSDMONITOR
- Java 一维数组,二维数组的定义声明 以及一维数组的 冒泡排序 以及二维数组的鞍点