• FAFU 1557


    构建字典序,模拟二叉树建26叉树

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <stdlib.h>
     4 #include <math.h>
     5 #include <time.h>
     6 #include <ctype.h>
     7 #include <string>
     8 #include <queue>
     9 #include <set>
    10 #include <map>
    11 #include <stack>
    12 #include <vector>
    13 #include <algorithm>
    14 #include <iostream>
    15 #define PI acos( -1.0 )
    16 using namespace std;
    17 typedef long long ll;
    18 
    19 const int NO = 1e5 + 5;
    20 char ch[NO];
    21 int n;
    22 struct ND
    23 {
    24     int win;
    25     ND *next[26];
    26 };
    27 
    28 int Solve( ND *tree )
    29 {
    30     for( int i = 0; i < 26; ++i )
    31     {
    32         if( tree->next[i] == NULL ) continue;
    33         if( Solve( tree->next[i] ) )
    34         {
    35             tree->win = 0;
    36             return 0;
    37         }
    38     }
    39     tree->win = 1;
    40     return 1;
    41 }
    42 
    43 int main()
    44 {
    45     int T;
    46     scanf( "%d", &T );
    47     while( T-- )
    48     {
    49         ND *tree;
    50         tree = new ND;
    51         for( int i = 0; i < 26; ++i )
    52             tree->next[i] = NULL;
    53         scanf( "%d", &n );
    54         for( int i = 0; i < n; ++i )
    55         {
    56             scanf( "%s", ch );
    57             ND *p = tree;
    58             int len = strlen( ch );
    59             for( int j = 0; j < len; ++j )
    60             {
    61                 int cur = ch[j] - 'a';
    62                 if( p->next[cur] == NULL )
    63                 {
    64                     p->next[cur] = new ND;
    65                     p = p->next[cur];
    66                     p->win = 0;
    67                     for( int t = 0; t < 26; ++t )
    68                         p->next[t] = NULL;
    69                 }
    70                 else p = p->next[cur];
    71             }
    72         }
    73         if( !Solve( tree ) ) puts( "First." );
    74         else puts( "Second." );
    75     }
    76     return 0;
    77 }
    View Code
  • 相关阅读:
    他们在清华的那几年——清华学长语录
    java正则表达非捕获组详解
    VC++ 6.0 快捷键大全
    vs2008的使用
    css的一些基本概念
    VC项目配置基础
    企业该如何规划建设自身的网站
    IT技术人员的薪资到底该如何定?
    高级程序员应该具备什么能力
    软件项目为什么成功率不高
  • 原文地址:https://www.cnblogs.com/ADAN1024225605/p/4138400.html
Copyright © 2020-2023  润新知