zoukankan      html  css  js  c++  java
  • pku1056 IMMEDIATE DECODABILITY

    http://poj.org/problem?id=1056

    Trie

    有一些字符串,判断是否:这些字符串之间都不是彼此的前缀

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 const int CHARSET = 2, BASE = '1', MAX_NODE = 1001; 
     5 
     6 int tot, root, child[MAX_NODE][CHARSET];
     7 bool flag[MAX_NODE];
     8 
     9 void init()
    10 {
    11     memset(child, 0, sizeof(child));
    12     flag[1] = false;
    13     root = tot = 1;
    14 }
    15 
    16 int insert(const char *str)
    17 {
    18     int i, cur, j, flag1 = 0, flag2 = 0;
    19     cur = root;
    20     for(i=0; str[i]; i++)
    21     {
    22         if(child[cur][str[i]-BASE] == 0)
    23         {
    24             if(flag[cur])
    25             {
    26                 flag2 = 1;
    27             }
    28             flag1 = 1;
    29             tot = tot + 1;
    30             child[cur][str[i]-BASE] = tot;
    31             memset(child[tot], 0, sizeof(child[tot]));
    32             flag[tot] = false;
    33         }
    34         cur = child[cur][str[i]-BASE];
    35     }
    36     flag[cur] = true;
    37     if(flag1 == 0 || flag2 == 1)
    38     {
    39         return 1;//重复 
    40     }
    41     return 0;
    42 }
    43 
    44 
    45 
    46 int main()
    47 {
    48     char s[12] = "\0";
    49     int cases = 1, temp, flag = 0;
    50     init();
    51     while(~scanf("%s", s))
    52     {
    53         if(strcmp(s, "9") == 0)
    54         {
    55             if(flag)
    56             {
    57                 printf("Set %d is not immediately decodable\n", cases);
    58             }
    59             else
    60             {
    61                 printf("Set %d is immediately decodable\n", cases);
    62             }
    63             cases ++;
    64             flag = 0;
    65             init();
    66         }
    67         else
    68         {
    69             temp = insert(s);
    70             //printf("%d\n", temp);
    71             flag |= temp;
    72         }
    73         memset(s, 0, sizeof(s));
    74     }
    75     return 0;
    76 }
  • 相关阅读:
    ASP记录(一)
    ASP HTML JS CSS JQ之间恩怨
    ASP记录(二)之Input
    网页范例
    初识GoAhead
    TCP、IP、Http、Socket、telnet
    自定义博客的背景图片
    工具管理操作类介绍
    STL string的构造函数
    cout 格式化输出
  • 原文地址:https://www.cnblogs.com/yuan1991/p/pku1056.html
Copyright © 2011-2022 走看看