HDU1305(二叉树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1305

题意:给出一些二进制编码,问是不是会有一个串是另一个串的前缀.

 

今天水了一道题,它叫二叉树,还以为要用到霍夫曼编码呢```

 

3828743 2011-04-16 19:40:58 Accepted 1305 0MS 220K 666 B C++ ㄉ ㄉ

 

#include<stdio.h> #include<string.h> #define M 2<<12 char s[M]; char b[16]; int flag; void Insert() { int i; char *p; for(i=2,p=b;*p;i<<=1,p++){ if(s[i]==2){ flag=1;return ;} if(*p=='0') s[i]=1; else s[++i]=1; } if(s[i]==1) {flag=1;return ;} s[i]=2; } int main() { int t=1; memset(s,0,sizeof(s)); flag=0; while(gets(b)){ if(b[0]=='9'){ printf("Set %d is ",t++); printf(flag?"not ":""); puts("immediately decodable"); flag=0;memset(s,0,sizeof(s)); } else if(!flag) Insert(); } return 0; } 

你可能感兴趣的:(HDU1305(二叉树))