hdu1305Immediate Decodability(字典树)

news/2024/7/5 21:02:38

这题看是否

这题能A是侥幸,解决的办法是先存一下输入的字符串,进行排序。

Problem Description
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 input. 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.
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

#include <iostream>

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

using namespace std;

typedef struct Node

{    

    struct Node *next[2];

    int flag;

}Node,*Tree;

int flag1;

void Creat(Tree &T)

{    

   T=(Node *)malloc(sizeof(Node));  

   T->flag=0;   

   for(int i=0;i<2;i++)    

      T->next[i]=NULL;

}

void insert(Tree &T,char *s)

{    

    Tree p=T;  

    int t;    

    int l=strlen(s);  

   for(int i=0;i<l;i++)

    {     

        t=s[i]-'0';     

       if(p->next[t]==NULL)   

          Creat(p->next[t]);

        p=p->next[t];        

       if(p->flag>0)           

        flag1=0;   

  }    

      p->flag++;

}

void D(Tree p)

{    

    for(int i=0;i<2;i++)

    {       

       if(p->next[i]!=NULL)  

           D(p->next[i]);   

    }    

     free(p);

}

int main()

{    

    char a[30];    

    int kk=0;

    Tree T;    

   while(scanf("%s%*c",a)!=EOF)  

   {        

      Creat(T);     

      kk++;   

      flag1=1;   

      insert(T,a);   

      while(scanf("%s",a)!=EOF)    

     {            

        if(strcmp(a,"9")==0)    

             break;      

         insert(T,a);  

       }       

      if(flag1)        

     printf("Set %d is immediately decodable\n",kk);

       else printf("Set %d is not immediately decodable\n",kk);       

  D(T);

    }   

  return 0;

}


http://lihuaxi.xjx100.cn/news/248455.html

相关文章

介绍ABC 蜂群算法网站

来源连接&#xff1a; Artificial Bee Colony (ABC) Algorithm Homepage https://abc.erciyes.edu.tr/software.htm 网站主页如下&#xff1a;通过访问可以获得源代码以及相关的说明 可以通过连接获得代码以及文档&#xff0c;自己觉的很全面

Python进度条

1. 简介 在日常运行程序的过程中常常涉及到循环迭代过程&#xff0c;对于执行时间很短的程序来说倒无所谓&#xff0c;但对于运行过程有明显耗时的涉及循环迭代的程序&#xff0c;为其加上进度条&#xff08;progress bar&#xff09;&#xff0c;是帮助我们监测代码执行进度以…

html标签的显示模式(块级标签,行内标签,行内块标签)(转)

html标签的显示模式&#xff08;块级标签&#xff0c;行内标签&#xff0c;行内块标签&#xff09; 今天讲课的时候&#xff0c;讲到了html中的标签的显示模式&#xff0c;大致分为块级标签和行内标签。那么初学者在刚使用标签的时候会发现有些属性在一些标签上不起作用&#x…

Web Api单元测试写法

例如我们在Web Api项目中有个Controller public class SomeController : ApiController { public HttpResponseMessage Get() { // 一些操作 return Request.CreateResponse(HttpStatusCode.OK&#xff0c; someModel); } }如果你在单元测试中直接调用 SomeController 的Get()方…

Android:ViewPager为页卡内视图组件添加事件

在数据适配器PagerAdapter的初始化方法中添加按钮事件&#xff0c;这里是关键&#xff0c;首先判断当前的页卡编号。必须使用当前的view来获取按钮。 Overridepublic Object instantiateItem(View arg0, int arg1) {if (arg1 < 3) {((ViewPager) arg0).addView(mListViews.g…

单目标优化,多目标优化,数值优化,组合优化

何为优化&#xff1f;措施&#xff1a; 对应方法 变得更优&#xff1a; 对应的结果更加的好 优化&#xff1a; 动词&#xff0c;一种行为方法----------->目的是获得更好的结果&#xff0c;总之有所改善 优化问题的三要素&#xff1a; &#xff08;1) 决策变量 所变&…

Eigen使用笔记

1. 常用头文件 2. 使用问题汇总 2.1. 求逆 在有的环境下&#xff0c;有的版本的Eigen&#xff0c;使用Eigen的inverse()求逆&#xff0c;和正确值差一个负号&#xff0c;这是Eigen中存在的bug&#xff0c;修改为矩阵分解后该问题就能解决 Eigen::Matrix4d I Eigen::Matrix4…

单件类的安全实现

1. 不安全的实现方法 std::unique_ptr<Interface> instance_(nullptr);static Interface* GetInstance() {if (instance_.get() nullptr) {instance_.reset(new Interface());}return instance_.get(); } instance_.reset(new Interface)包含了三步&#xff1a; 1&am…