zoukankan      html  css  js  c++  java
  • UVa 644 Immediate Decodability

    吐槽下我的渣渣英语啊,即使叫谷歌翻译也没有看懂,最后还是自己读了好几遍题才读懂。

    题目大意:题意很简单,就是给一些互不相同的由'0','1'组成的字符串,看看有没有一个字符串是否会成为另一个的开头的子串。

    直接简单粗暴的去比较就可以了。

    这是原题:



      Immediate Decodability 

    An encoding of a set of symbols is said to be immediately decodable if no code for one symbol is the prefix of a code for another symbol. We will assume for this problem that all codes are in binary, that no two codes within a set of codes are the same, that each code has at least one bit and no more than ten bits, and that each set has at least two codes and no more than eight.


    Examples: Assume an alphabet that has symbols {A, B, C, D}


    The following code is immediately decodable:


    A:01 B:10 C:0010 D:0000


    but this one is not:


    A:01 B:10 C:010 D:0000 (Note that A is a prefix of C)

    Input 

    Write a program that accepts as input a series of groups of records from a data file. Each record in a group contains a collection of zeroes and ones representing a binary code for a different symbol. Each group is followed by a single separator record containing a single 9; the separator records are not part of the group. Each group is independent of other groups; the codes in one group are not related to codes in any other group (that is, each group is to be processed independently).

    Output 

    For each group, your program should determine whether the codes in that group are immediately decodable, and should print a single output line giving the group number and stating whether the group is, or is not, immediately decodable.


    The Sample Input describes the examples above.

    Sample Input 

    01
    10
    0010
    0000
    9
    01
    10
    010
    0000
    9
    

    Sample Output 

    Set 1 is immediately decodable
    Set 2 is not immediately decodable
    

    Miguel A. Revilla 
    2000-01-17

    AC代码:

     1 //#define LOCAL
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <algorithm>
     6 using namespace std;
     7 
     8 char code[9][11];
     9 bool cmp(char s1[], char s2[]);
    10 
    11 int main(void)
    12 {
    13     #ifdef LOCAL
    14         freopen("644in.txt", "r", stdin);
    15     #endif
    16     int kase = 0, n;
    17     while(gets(code[0]))
    18     {
    19         bool flag = false;
    20         int i, j;
    21         n = 0;
    22         while(code[n][0] != '9')
    23             gets(code[++n]);
    24 
    25         for(i = 0; i < n - 1; ++i)
    26         {
    27             if(flag)
    28                 break;
    29             for(j = i + 1; j < n; ++j)
    30             {
    31                 flag = cmp(code[i], code[j]);
    32                 if(flag)    break;
    33             }
    34         }
    35 
    36         if(!flag)
    37             printf("Set %d is immediately decodable
    ", ++kase);
    38         else
    39             printf("Set %d is not immediately decodable
    ", ++kase);
    40     }
    41     return 0;
    42 }
    43 //比较一个字符串是否会成为另一个的开头的子串
    44 bool cmp(char s1[], char s2[])
    45 {
    46     int l1 = strlen(s1);
    47     int l2 = strlen(s2);
    48     int lmin = min(l1, l2), i = 0;
    49     if(l1 == l2)//长度相等,必然不会是子串
    50         return false;
    51     for(i = 0; i < lmin; ++i)
    52     {
    53         if(s1[i] != s2[i])
    54             break;
    55     }
    56     if(i == lmin)
    57         return true;
    58     return false;
    59 }
    代码君
  • 相关阅读:
    Android签名详解(debug和release)
    Java反射机制的学习
    Android应用开发中如何使用隐藏API(转)
    asp.net购物车,订单以及模拟支付宝支付(二)---订单表
    asp.net购物车,订单以及模拟支付宝支付(一)---购物车表及添加购物车流程
    asp.net权限控制的方式
    .Net使用程序发送邮件时的问题
    Word2016“此功能看似已中断 并需要修复”问题解决办法
    C#字符串来袭——因为爱,所以爱
    C#时间的味道——任时光匆匆我只在乎你
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/3817617.html
Copyright © 2011-2022 走看看