Immediate Decodability

本文介绍了两种使用不同数据结构(二叉树和字典树)来判断一组编码是否立即可解的方法。通过插入字符串到树中,如果发现冲突则表明该组编码不可立即解析。文章提供了完整的C语言代码实现。

http://acm.hdu.edu.cn/showproblem.php?pid=1305

同上题一样,判断一个串是不是另一个串的子串,用的是模拟二叉树

View Code
 1 #include<stdio.h>
 2 struct trie
 3 {
 4     int num;
 5     trie *child[2];
 6     trie()
 7     {
 8         for(int i=0;i<2;i++) child[i]=0;
 9         num=0;
10     }
11 } *root;
12 int flag;
13 void Insert(char *x)
14 {
15     int k=0;
16     trie *p=root;
17     while(x[k]!='\0')
18     {
19         if(p->child[x[k]-'0']==0)
20         p->child[x[k]-'0']=new trie;
21         p=p->child[x[k]-'0'];
22         if(p->num==2)
23         {
24             flag=1;
25             k++;
26             continue;
27         }
28         if(p->num==1)
29         {
30             if(x[k+1]=='\0')
31             flag=1;
32             k++;
33             continue;
34         }
35         p->num=1;
36         k++;
37     }
38     p->num=2;
39 }
40 void Free(trie *p)
41 {
42     for(int i=0;i<2;i++)
43     if(p->child[i]) 
44     Free(p->child[i]);
45     delete p;
46 }
47 int main()
48 {
49     char x[10];
50     int t=1;
51     root=new trie;
52     flag=0;
53     while(scanf("%s",x)!=EOF)
54     {
55         if(x[0]=='9')
56         {
57             if(flag) printf("Set %d is not immediately decodable\n",t++);
58             else  printf("Set %d is immediately decodable\n",t++);
59             flag=0;
60             Free(root);
61             root=new trie;
62             continue;
63         }
64         Insert(x);
65     }
66     return 0;
67 }

 

 http://www.doc88.com/p-898241392982.html字典树做法,动态的

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<malloc.h>
 4 bool isphone ;
 5 struct node
 6 {
 7     bool flag ;
 8     struct node *next[10] ;
 9 } ;
10 struct node *root ;
11 struct node*creat()
12 {
13     node *p = (node*)malloc(sizeof(node)) ;
14     for(int i=0; i<10; i++)
15     {
16         p->next[i] = NULL ;
17     }
18     p->flag = false ;
19     return p ;
20 }
21 int insert(char *s)
22 {
23     node *p = root ;
24     int len = strlen(s) ;
25     for(int i=0; i<len; i++)
26     {
27         if(p->next[s[i]-'0']==NULL)
28         {
29             if(p->flag==false)
30             {
31                 p->next[s[i]-'0'] = creat() ;
32                 p = p->next[s[i]-'0'] ;
33                 if(i==len-1)
34                 {
35                     p->flag = true ;
36                 }
37                 else
38                 p->flag = false ;
39              }
40              else
41              {
42                 isphone = false ;
43                 return 0 ;
44              }
45          }
46          else
47          {
48              if(i==len-1&&p->flag==false)
49              {
50                  isphone = false ;
51                  return 0 ;
52              }
53              p = p->next[s[i]-'0'] ;
54          }
55      }
56      return 0 ;
57 }
58 int del(node *p)
59 {
60     if(p==NULL)
61     return 0 ;
62     for(int i=0; i< 10; i++)
63     {
64         if(p->next[i]!=NULL)
65         del(p->next[i]) ;
66     }
67     free(p) ;
68     return 0 ;
69 }
70 int main()
71 {
72     int num = 1 ;
73     char s[1010] ;
74     while(scanf("%s", s))
75     {
76         root = creat() ;
77         isphone = true ;
78         insert(s) ;
79         while(scanf("%s", s),*s!='9')
80         {
81             insert(s) ;
82         }
83         if(isphone)
84         printf("Set %d is immediately decodable\n", num++) ;
85         else printf("Set %d is not immediately decodable\n", num++) ;
86     }
87     return 0 ;
88 }

结果Output Limit Exceeded

 

转载于:https://www.cnblogs.com/yelan/archive/2013/02/22/2922394.html

在信息技术领域,“Immediate”通常指即时处理、立即执行的动作或状态。以下是几个可能相关的IT概念及其解释: --- ### 1. **Immediate Mode Rendering** 这是计算机图形学中的一个术语,指的是直接向硬件发送绘图命令的方式。在这种模式下,应用程序会逐帧生成所有的几何数据并将其传递给GPU进行渲染。这种方式的优点是简单直观,缺点是效率较低,因为它需要每帧重新计算所有数据。 ```cpp // 示例代码片段 (OpenGL Immediate Mode) glBegin(GL_TRIANGLES); glVertex3f(0.0, 1.0, 0.0); // 定义顶点坐标 glVertex3f(-1.0, -1.0, 0.0); glVertex3f(1.0, -1.0, 0.0); glEnd(); ``` --- ### 2. **Immediate Value (即刻值)** 在编程中,“immediate value”是指可以直接嵌入到指令中的常数值,而不是从内存地址加载的数据。例如,在汇编语言中,某些操作数可以被标记为“immediate”,表示它们是一个固定的数值而非变量。 ```asm MOV AX, 42 ; 这里的42就是 immediate value ADD BX, AX ; 将AX的值加到BX中 ``` --- ### 3. **Immediate Execution Context** 在脚本语言(如JavaScript)中,“immediate execution”描述了一种函数定义后立刻被执行的情况。这种技术经常用于创建局部作用域或者避免全局污染。 ```javascript (function() { console.log('This is an immediately invoked function expression.'); })(); ``` --- ### 4. **Real-Time or Immediate Processing** 实时系统强调快速响应外部事件的能力。“Immediate processing”则特指一种无需延迟的操作方式,确保任务能够在规定时间内完成。这常见于操作系统调度算法以及分布式数据库事务管理等领域。 --- ### 5. **Network Protocols with Immediate Responses** 在网络通信协议设计里,“immediate response”意味着服务器接收到请求之后马上返回结果而不等待其他条件满足。HTTP就是一个典型的例子;当客户端发起GET请求时,服务端应尽快提供资源内容作为回应。 --- #### 注意事项: 由于没有明确指出具体的技术方向,以上列举了几种可能性较大的含义供参考。如果目标更倾向于某一特定方面,则需进一步细化查询范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值