zoukankan      html  css  js  c++  java
  • hdu1075What Are You Talking About(trie树)

    http://acm.hdu.edu.cn/showproblem.php?pid=1075

    难得的1A 把对应的英语单词存在 火星文字最后一个字母的结构体字符串中 挨个找

    View Code
      1 #include <iostream>
      2 #include<cstdio>
      3 #include<string.h>
      4 #include<stdlib.h>
      5 using namespace std;
      6 int flag;
      7 struct node
      8 {
      9     int flag;
     10     char s[21];
     11     node *next[27];
     12     node()
     13     {
     14         flag = 0;
     15         memset(next,NULL,sizeof(next));
     16     }
     17 };
     18 void trie(node *head,char *c1,char *c2)
     19 {
     20     int k1 = strlen(c2),i,d;
     21     node *p = head;
     22     for(i =0 ; i < k1 ; i++)
     23     {
     24         d = c2[i]-'a';
     25         if(p->next[d]==NULL)
     26         {
     27             p->next[d] = new node;
     28         }
     29         p = p->next[d];
     30     }
     31 
     32     p->flag = 1;
     33     strcpy(p->s,c1);
     34 }
     35 void search(node *head,char *c)
     36 {
     37     int i,j,k = strlen(c),d;
     38     node *p = head;
     39     for(i = 0 ; i < k ; i++)
     40     {
     41         d = c[i]-'a';
     42         if(p->next[d]==NULL)
     43         {
     44             flag = 0;
     45             return;
     46         }
     47         p=p->next[d];
     48     }
     49     if(p->flag == 1)
     50     {
     51         flag = 1;
     52         printf("%s",p->s);
     53     }
     54 }
     55 int main()
     56 {
     57     int i,j,k,n,g,w;
     58     char c1[20],c2[20],str[3001],s[21];
     59     node *head = new node;
     60     scanf("%s",c1);
     61     while(scanf("%*c%s",c1)!=EOF)
     62     {
     63         if(strcmp(c1,"END")==0)
     64         break;
     65         scanf("%s",c2);
     66         trie(head,c1,c2);
     67     }
     68     scanf("%s",c1);
     69     getchar();
     70     while(gets(str)!=NULL)
     71     {
     72         if(strcmp(str,"END")==0)
     73         break;
     74         k = strlen(str);
     75         int f = 0;
     76         g= 0;
     77         for(i =0 ; i < k ; i++)
     78         {
     79             if(str[i]>='a'&&str[i]<='z')
     80             {
     81                 s[g++] = str[i];
     82                 f = 1;
     83             }
     84             else
     85             {
     86                 if(f)
     87                 {
     88                     f = 0;
     89                     flag = 0;
     90                     s[g]='\0';
     91                     g = 0;
     92                     search(head,s);
     93                     if(!flag)
     94                     printf("%s",s);
     95                     printf("%c",str[i]);
     96                 }
     97                 else
     98                 printf("%c",str[i]);
     99             }
    100         }
    101         if(str[k-1]>='a'&&str[k-1]<='z')
    102         {
    103             s[g] = '\0';
    104             flag = 0;
    105             search(head,s);
    106             if(!flag)
    107             printf("%s",s);
    108         }
    109         puts("");
    110     }
    111     return 0;
    112 }
  • 相关阅读:
    第八天-2019-12-3环境变量-自动挂载-别名
    Raid
    图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100
    第七天-2019-12-2改网卡,dns,挂载
    第六天2019-11-29vi命令使用技巧与架构目录
    linux目录架构
    第五天-2019-11-28基本配置命令
    第四天--2019-11-27网络信息配置
    ue4 Widget to RenderTarget
    UE4 ProcessEvent multiple parameters
  • 原文地址:https://www.cnblogs.com/shangyu/p/2636092.html
Copyright © 2011-2022 走看看