ZJM与生日礼物

一、题目
ZJM 收到了 Q老师 送来的生日礼物,但是被 Q老师 加密了。只有 ZJM 能够回答对 Q老师 的问题,Q老师 才会把密码告诉 ZJM。

Q老师 给了 ZJM 一些仅有 01 组成的二进制编码串, 他问 ZJM:是否存在一个串是另一个串的前缀.

二、输入
多组数据。每组数据中包含多个仅有01组成的字符串,以一个9作为该组数据结束的标志。

三、输出
对于第 k 组数据(从1开始标号),如果不存在一个字符串使另一个的前缀,输出"Set k is immediately decodable",否则输出"Set k is not immediately decodable"。
每组数据的输出单独一行

四、样例输入输出
Input

01
10
0010
0000
9
01
10
010
0000
9

Output

Set 1 is immediately decodable
Set 2 is not immediately decodable

五、解题思路
  字典树例题。(字典树样例:
  字典树实现插入字符串,并标记字符串末尾节点。
  本题只需要修改字典树的插入函数,在插入一个字符串s时,如果i==len-1&&child[now][x]!=-1,则说明s是之前某个字符串的前缀,在s插入树中的这个过程中,字典树中的节点并没有增多;而如果flag[child[now][x]]==1,则说明之前的某个字符串时s得前缀,在s插入树的过程中,经过了某个之前字符串的结束。

六、样例代码

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
using namespace std;char str[1010];struct trie
{static const int N = 1010, charset = 10;int tot;int root;int child[N][charset];int flag[N];trie(){memset(child,-1,sizeof child);root = tot = 0;}int insert(char *str){int now = root;int jud = 0;int len = strlen(str);for(int i=0;i<len;i++){int x = str[i] - '0';if(child[now][x] == -1){child[now][x] = ++tot;flag[now] = 0;}else if(i == len-1 || flag[child[now][x]]){jud = 1;}now = child[now][x];}flag[now] = 1;return jud;}void clear(){memset(child,-1,sizeof child);root = tot = 0;     }
}; int main()
{trie t;int ans = 0; int cnt = 0;while(scanf("%s",str) != EOF){ans = max(ans, t.insert(str));if(str[0]-'0' == 9){cnt++;if(ans == 0) {cout<<"Set "<<cnt<<" is immediately decodable"<<endl;}else{cout<<"Set "<<cnt<<" is not immediately decodable"<<endl;}ans = 0;t.clear();}}return 0;
}

第十五周作业——ZJM与生日礼物相关推荐

  1. 第十五周作业——ZJM与纸条

    ZJM与纸条 一.题目 ZJM 的女朋友是一个书法家,喜欢写一些好看的英文书法.有一天 ZJM 拿到了她写的纸条,纸条上的字暗示了 ZJM 的女朋友 想给 ZJM 送生日礼物.ZJM 想知道自己收到的 ...

  2. g第十四周,十五周作业

    1.数组中偶数的和 #include <stdio.h> int main(){int i,s=0;int a[10];for(i=0;i<=9;i++){scanf("% ...

  3. linux内核实验教程答案,20199310《Linux内核原理与分析》第十五周作业 Linux安全实验...

    1 补充知识 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭, ...

  4. 信息安全系统设计基础第十五周总结

    信息安全系统设计基础第十五周总结 [内容:链接汇总] 一.每周读书笔记链接汇总 [第一周读书笔记] http://www.cnblogs.com/shadow135211/p/4824555.html ...

  5. 20189200余超 2018-2019-2 移动平台应用开发实践第十二周作业

    20189200余超 2018-2019-2 移动平台应用开发实践第十二周作业 服务 Service的声明 Service是Android中的四大组件,使用它一定要在AndroidManifest.x ...

  6. Python第五周作业

    Python第五周作业 1. 一元二次方程求根 2. 百钱买百鸡 3. 鸡兔同笼 4. 最大公约数和最小公倍数 5. 判断三角形并计算面积 6. 判断IP地址合法性 7. 回文素数 8. 反素数 9. ...

  7. 2017面向对象程序设计(Java)第十五周学习总结

    上周,老师要求同学们自学应用程序部署,并布置了相关的实验任务.此次实验的目的是掌握Java应用程序的打包操作:了解应用程序存储配置信息的两种方法: 了解Applet小应用程序的开发及应用方法:掌握基于 ...

  8. 第十五周助教工作总结

    第十五周助教工作总结--李克龙 助教博客链接:https://www.cnblogs.com/lkl7117/ 本次作业的要求:https://www.cnblogs.com/nwnu-daizh/p ...

  9. 2021年春季学期-信号与系统-第十五次作业参考答案-第十一小题参考答案

    本文是 2021年春季学期-信号与系统-第十五次作业参考答案 中各小题的参考答案. §11 第十一小题 11.使用级联结构实现以下传递函数: ▓ 求解 (1)第一小题 X(z)=1−14z−1(1+1 ...

最新文章

  1. MyBatis 中的九种设计模式
  2. Linux命令详解----iostat
  3. 科研狗的国庆与普通人的国庆有什么不同?
  4. volatile实现禁止指令重排底层操作原理
  5. 计算机组成原理存储结构,计算机组成原理与体系结构----存储系统
  6. C++三路比较运算符
  7. TCP/IP文档阅读笔记-TCP Receive Window
  8. 入门机器学习(一)--单变量线性回归
  9. Mysql排序添加名词_记面试中问到的MySQL的SQL调优问题
  10. 华为P50系列终于要来了!但最大问题却是...
  11. python简单文件读写
  12. win7php一键,批处理也能干大事之——如何实现Win7系统一键切换用户
  13. UR5 UR10 ------六自由度机械臂
  14. 心率监测仪全国产化电子元件推荐方案
  15. viper4android fx 驱动,ViPER4Android FX 音效驱动社区版安
  16. ecshop模板支持html,免费ecshop响应式设计手机wap自适应dossy整站模板
  17. MySQL重做日志文件放在磁盘_重做日志文件
  18. 企业邮箱托管外包后安全吗?企业邮箱安全须知
  19. 2018国内各大互联网公司前端面试题汇总【转:公众号~~高级前端进阶公众号】
  20. Gmail 中出现紫字的怪现象

热门文章

  1. ajax带参数get,使用jQuery ajax方法传递GET参数
  2. 域名解析-/etc/hosts
  3. 校园歌手信息评分系统(C语言),大一新生期末实训
  4. git一直输入用户名和密码的解决方法remote: HTTP Basic: Access denied fatal: Authentication failed for
  5. Python Web学习笔记,电影网站
  6. Cocos Creator 安卓复制功能
  7. 工业相机之镜头基础知识
  8. Win7系统的电脑还可以装win10吗
  9. 2019-详细Android Studio开发百度地图(5)—百度地图_导航和TTS语音播报的实现
  10. HD44780http://blog.sina.com.cn/s/blog_61b6e08b01016xif.html