zoukankan      html  css  js  c++  java
  • 洛谷P2580(trie)

    第一行一个整数 n,表示班上人数。接下来 n 行,每行一个字符串表示其名字(互不相同,且只含小写字母,长度不超过 50)。第 n+2 行一个整数 m,表示教练报的名字。接下来 m 行,每行一个字符串表示教练报的名字(只含小写字母,且长度不超过 50)。

    对于每个教练报的名字,输出一行。如果该名字正确且是第一次出现,输出“OK”,如果该名字错误,输出“WRONG”,如果该名字正确但不是第一次出现,输出“REPEAT”。(均不加引号)

    这道题就是裸的trie,没什么好多说的。。

     1 #include <cstdio>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 const int maxn=55;
     6 int n, m;
     7 char s[maxn];
     8 struct node{
     9     node *son[26];
    10     int num;
    11 }root, *now;
    12 
    13 int main(){
    14     scanf("%d", &n);
    15     int len;
    16     for (int i=0; i<n; ++i){
    17         scanf("%s", s);
    18         len=strlen(s);
    19         now=&root;
    20         int c; //这里不能用nowson,因为复制过来以后就变成两个指针!
    21         for (int i=0; i<len; ++i){
    22             c=s[i]-97;
    23             if (now->son[c]==0)
    24                 now->son[c]=new node();
    25             now=now->son[c];
    26         }
    27     }
    28     scanf("%d", &m);
    29     bool flag;
    30     for (int i=0; i<m; ++i){
    31         scanf("%s", s);
    32         len=strlen(s);
    33         now=&root;
    34         int c;
    35         flag=false;
    36         for (int i=0; i<len; ++i){
    37             c=s[i]-97;
    38             if (!now->son[c]){
    39                 flag=true;
    40                 break;
    41             }
    42             now=now->son[c];
    43         }
    44         if (flag) { printf("WRONG
    "); continue; }
    45         if (now->num++) printf("REPEAT
    ");
    46             else printf("OK
    ");
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    数据准备2 数据清洗
    数据准备1 数据导入、导出
    数据分析基本流程 Python基本数据类型 Python各种括号的使用方式
    fineBI 学习成果展示1
    未确认融资收益的计算
    合同现金流量
    公允价值持续计算的金额
    发放股票股利
    权益法未实现内部交易损益的调整
    营业外收入入不入损益
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/7508562.html
Copyright © 2011-2022 走看看