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

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

    题目大意:

    给你一串火星文,让你输出翻译后的版本

    思路:

    这题的思路其实挺简单。但是如何进行输入想了好久!

    具体的还是看代码吧(代码上有注释):

      1 #include <stdio.h>
      2 #include <string.h>
      3 #include <string>
      4 #include <iostream>
      5 #include <stdlib.h>
      6 
      7 using namespace std;
      8 const int MAX_NODE = 1000005;
      9 const int CHARSET = 26;
     10 
     11 
     12 int trie[MAX_NODE][CHARSET]={0};
     13 //int color[MAX_NODE]={0};
     14 int vis[MAX_NODE]={0};
     15 int k;
     16 char key_Value[MAX_NODE][11];
     17 char Input_str[10000][3005];
     18 int p = 0;
     19 
     20 void insert(char w[])
     21 {
     22     int len = strlen(w);
     23     p = 0;  // 根结点
     24     for (int i=0;i<len;i++)
     25     {
     26         int c = w[i] - 'a';
     27         if (!trie[p][c])
     28         {
     29             trie[p][c] = k;
     30             k++;
     31         }
     32         p = trie[p][c];
     33     }
     34     vis[p] = 1;
     35     //color[p] = 1;
     36 }
     37 
     38 
     39 int search(string s)
     40 {
     41     int len = s.length();
     42     p = 0;
     43     for (int i=0;i<len;i++)
     44     {
     45         int c = s[i]-'a';
     46         if (!trie[p][c])
     47             return 0;
     48         p = trie[p][c];
     49     }
     50     if (vis[p])
     51         return p;
     52     else
     53         return 0;
     54 }
     55 
     56 
     57 int main()
     58 {
     59 #ifndef ONLINE_JUDGE
     60     freopen("../in.txt", "r", stdin);
     61 #endif
     62     char str[5005];
     63     scanf("%s",str);
     64     getchar();
     65     k = 1;
     66     p = 0;
     67     memset(trie,0, sizeof(trie));
     68     memset(vis,0, sizeof(vis));
     69     while (true)
     70     {
     71         char str_first[11],str_second[11];
     72         scanf("%s",str_first);
     73         if (str_first[0] == 'E' && str_first[1] == 'N' && str_first[2] == 'D')
     74             break;
     75         scanf("%s",str_second);
     76         insert(str_second);
     77         strcpy(key_Value[p],str_first); //记录点p对应的字符串
     78     }
     79     scanf("%s",str);
     80     getchar();
     81     int input_cnt = 0;
     82     while (true)
     83     {
     84         gets(Input_str[input_cnt]);
     85         if (strcmp(Input_str[input_cnt],"END") == 0)
     86             break;
     87         input_cnt++;
     88     }
     89     for (int i=0;i<input_cnt;i++)
     90     {
     91         int pos = 0;
     92         int input_length = strlen(Input_str[i]);
     93         while (pos<input_length)
     94         {
     95             string string1;
     96             //记录符合要求的单词
     97             while ((Input_str[i][pos] <= 'z' && Input_str[i][pos] >= 'a') && pos < input_length ) {
     98                 string1 += Input_str[i][pos++];
     99             }
    100             int key = search(string1);
    101             //无法翻译的就直接输出
    102             if (!key && string1.length())
    103             {
    104                 cout << string1;
    105             }
    106             else
    107             {
    108                 printf("%s",key_Value[key]);
    109             }
    110             //不符合要求的就直接输出
    111             while (true) {
    112                 if ((Input_str[i][pos] > 'z' || Input_str[i][pos] < 'a') && pos < input_length) {
    113                     printf("%c",Input_str[i][pos++]);
    114                 }
    115                 else
    116                     break;
    117             }
    118         }
    119         printf("
    ");
    120     }
    121     return 0;
    122 }
  • 相关阅读:
    Scrapy 概览笔记
    Python 依赖版本控制 (requirements.txt 文件生成和使用)
    Python 虚拟空间的使用
    macOS 所有版本 JDK 安装指南 (with Homebrew)
    鉴权那些事
    Java 位运算符和 int 类型的实现
    ASP.NET Core 入门教程 5、ASP.NET Core MVC 视图传值入门
    如何做好一次知识或技术分享
    ASP.NET Core 入门教程 4、ASP.NET Core MVC控制器入门
    ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门
  • 原文地址:https://www.cnblogs.com/-Ackerman/p/11209970.html
Copyright © 2011-2022 走看看