蓝桥杯 摩尔斯电码破译 树上的搜索
来源:互联网 发布:域名管理权变更 编辑:程序博客网 时间:2024/05/01 04:42
摩尔斯电码破译。类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文。请不要使用"zylib.h",只能使用标准库函数。用' * '表示' . ',中间空格用' | '表示,只转化字符表。
首先是读入问题,采用scanf一次将所有输入全部放入一个字符组中。然后搜素保存好的字符,输出对应的字母。
问题是,如何判断字符串与字母的对应关系。
观察题中所给表格,发现只存在“-”和“*”两种符号且一共24种组合。可以考虑使用二叉树保存表格往左为“*”往右为“-”使字母与二叉树的节点相对应。
二叉树编号从一开始由上至下由左至右依次排列,在根据表格在相应位置填入字母,在没有字母的节点使用特殊数字表示(我用1表示没有相应字母)。最后将该二叉树保存,我使用一维数组保存,用数组下标表示结点编号,数组存储字母和特殊字符。
在树中搜索时只需定义变量i=1;当为*时i=i*2;为-时i=i*2+1;为|时输出以当前i值为下标的字母并且将i值重新置1.
#include <stdio.h>#include<string.h>int main(void){char str[100000];char found[33]={"11etianmsurwdkgohvf1l1p1b1cyzq11"};/*保存了整颗树*/int cur,i,a;scanf("%s",str);a=strlen(str);for(cur=0,i=1;cur<a;cur++) /*遍历完输入的所有字符*/{switch(str[cur]) /*搜索树*/{case 42:i*=2;break;case '-':i=i*2+1;break;case '|':printf("%c",found[i]);i=1;break;default:;}}printf("%c",found[i]); /*由于最后一组字母没有以|结束,这里用于将其直接输出*/ return 0;}
0 0
- 蓝桥杯 摩尔斯电码破译 树上的搜索
- 蓝桥杯摩尔斯电码
- 摩尔斯电码
- 摩尔斯电码
- 摩尔斯电码
- 摩尔斯电码 — 摩尔斯密码
- 摩尔斯电码a-z
- 摩尔斯电码[摩斯密码]
- 摩尔斯电码(Morse code)
- 摩尔斯电码---学习软件
- 艺多不压身—摩尔斯电码
- 摩尔斯电码快速记忆
- 摩尔斯电码练习感想
- 摩尔斯电码Mrose[C++]
- 蓝桥杯-9-3摩尔斯电码(java)
- 蓝桥杯算法提高 9-3摩尔斯电码
- 蓝桥杯 ADV-226 算法提高 9-3摩尔斯电码
- 蓝桥杯 算法提高 9-3摩尔斯电码 ADV-226
- 什么是SESSION?(二)
- Android如何判断APP使用的是h5界面还是native界面
- linux环境mysql的sql语句严格区分大小写问题
- MBR分区表详解
- C++ STL stack介绍与使用方法
- 蓝桥杯 摩尔斯电码破译 树上的搜索
- Illegal character code 0xb in attribute value text问题
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- C++ STL queue介绍与使用方法
- 本地Ubuntu14.04虚拟机搭建fbctf线上CTF比赛平台教程
- 设计师应该关注的科技发展方向(二)
- 【TZCOO】PaaS,Saas与IaaS的区别
- install crossover &qq
- C++ STL deque介绍与使用方法