zoukankan      html  css  js  c++  java
  • hdu 1075 What Are You Talking About

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

      1 #include<stdio.h>
      2 #include<math.h>
      3 #include<stdlib.h>
      4 #include<string.h>
      5 #include<iostream>
      6 using namespace std;
      7 struct tree{
      8     char c[20];
      9     struct tree *next[26];
     10 };
     11 struct tree *root;
     12 char num[20];
     13 
     14 void insert(char *q,char *p)
     15 {
     16     struct tree *now,*cur=root;
     17     int len=strlen(p);
     18     for(int i=0;i<len;i++)
     19     {
     20         if(cur->next[p[i]-'a']==NULL)//判断是否存在字母节点
     21         {
     22             now=(struct tree*)malloc(sizeof(struct tree));//分配空间
     23             for(int j=0;j<26;j++)
     24             {
     25                 now->next[j]=NULL;//初始化
     26             }
     27             strcpy(now->c,"0");
     28             cur->next[p[i]-'a']=now;//赋给空间
     29             cur=cur->next[p[i]-'a'];
     30         }
     31         else
     32         {
     33             cur=cur->next[p[i]-'a'];
     34         }
     35     }
     36     strcpy(cur->c,q);
     37 }
     38 
     39 int find(char *p)
     40 {
     41     struct tree *cur=root;
     42     int len=strlen(p);
     43     for(int i=0;i<len;i++)
     44     {
     45         if(cur->next[p[i]-'a']==NULL)//无法找到,证明无对应单词直接返回0
     46         return 0;
     47         else
     48         cur=cur->next[p[i]-'a'];
     49     }
     50     if(strcmp(cur->c,"0")==0)
     51     return 0;
     52     strcpy(num,cur->c);//把找到的对应单词赋给num
     53     return 1;
     54 }
     55 
     56 int main()
     57 {
     58     //freopen("in.txt","r",stdin);
     59     root=(struct tree*)malloc(sizeof(struct tree));//初始化
     60     for(int i=0;i<26;i++)
     61     {
     62         root->next[i]=NULL;//初始化
     63     }
     64     strcpy(root->c,"0");//初始化
     65     char p[3005],q[20];
     66     while(~scanf("%s",q))
     67     {
     68         if(strcmp(q,"START")==0)
     69         continue;
     70         if(strcmp(q,"END")==0)
     71         break;
     72         scanf("%s",p);
     73         insert(q,p);//建立树
     74     }
     75     strcpy(q,"0");
     76     strcpy(p,"0");
     77     getchar();//必须加
     78     while(gets(p))
     79     {
     80         if(strcmp(p,"START")==0)
     81         continue;
     82         if(strcmp(p,"END")==0)
     83         break;
     84         for(int j=0,i=0;p[i]!='';i++)//判断
     85         {
     86             if(p[i]<'a' || p[i]>'z')//判断是否为字母
     87             {
     88                 q[j]='';//用顶替这个不是字母的符号
     89                 j=0;
     90                 int n=find(q);//查找
     91                 if(n==0)
     92                 printf("%s",q);
     93                 else
     94                 printf("%s",num);
     95                 printf("%c",p[i]);//将这个不是字母的符号输出
     96             }
     97             else
     98             {
     99                 q[j]=p[i];//赋给q
    100                 j++;
    101             }
    102         }
    103         printf("
    ");
    104     }
    105 
    106 
    107     return 0;
    108 }
  • 相关阅读:
    Using Resource File on DotNet
    C++/CLI VS CSharp
    JIT VS NGen
    [Tip: disable vc intellisense]VS2008 VC Intelisense issue
    UVa 10891 Game of Sum(经典博弈区间DP)
    UVa 10723 Cyborg Genes(LCS变种)
    UVa 607 Scheduling Lectures(简单DP)
    UVa 10401 Injured Queen Problem(简单DP)
    UVa 10313 Pay the Price(类似数字分解DP)
    UVa 10635 Prince and Princess(LCS N*logN)
  • 原文地址:https://www.cnblogs.com/xuesen1995/p/4450322.html
Copyright © 2011-2022 走看看