博客作业05-查找
1.学习总结(2分)
1.1查找的思维导图
1.2 查找学习体会
1.查找表可分为两类:
静态查找:
仅作查询和检索操作的查找表。
动态查找:
有时在查询之后,还需要将“查询”结果为“不在查找表中”的数据元素插入到查找表中;(如手机通讯录)
或者,从查找表中删除其“查询”结果为“在查找表中”的数据元素。
2.查找的应用
1.手机通讯录
2.搜索引擎
3.图书馆检索书目
4.一篇文档中查找所需关键词
2.PTA实验作业(4分)
2.1 题目1:是否二叉搜索树
2.2 设计思路(伪代码或流程图)
建树
如果T==NULL
返回正确
如果!T->Left&&!T->Right)
返回正确
如果T->Left!=NULL
利用循环找到左子树最右节点
如果p->Data>T->Data则不满足非空左子树的所有键值小于其根结点的键值,不是二叉搜索树
返回错误
如果T->Right!=NULL
利用循环找到左子树最左节点
如果p->Data<T->Data,则不满足非空右子树的所有键值大于其根结点的键值,不是二叉搜索树
返回错误
利用递归继续判断其他节点
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
左右都是,但答案是NO,忽略了左、右子树都是二叉搜索树,用递归return (IsBST(T->Left) && IsBST(T->Right))
2.1 题目2:二叉搜索树中的最近公共祖先
2.2 设计思路(伪代码或流程图)
if 树中不存在 u 或 v
return ERROR;
end
while
if T->key大于 u 和 v
T指向左儿子
else if T->data小于u和v
T指向右儿子
else
retuen T->key
end
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
2.1 题目3:QQ帐户的申请与登陆
2.2 设计思路(伪代码或流程图)
输入指令行数
输出指令
if命令符为“L”
if找不到该账号,输出ERROR: Not Exist
if存在该账号
判断账户密码,如果正确,输出Login: OK,否则,输出ERROR: Wrong PW
else
if找不到该账号,插入该新账号,输出New: OK
if找到该账号,输出ERROR: Exist
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
N和L指令各一半,随机交错。帐号随机,取到上下界。密码随机,取到上下界,if,else太多,没有分清楚所属关系,后面理一理头绪,把每一个所属关系弄清楚,就好了
3.截图本周题目集的PTA最后排名(3分)
本次题目集总分:175分
必做题共:145分
我的总分:145分
3.1 PTA排名(截图带自己名字的排名)
4.代码阅读
基于词频的文件相似度 (30分)
实现一种简单原始的文件相似度计算,即以两文件的公共词汇占总词汇的比例来定义相似度。为简化问题,这里不考虑中文(因为分词太难了),只考虑长度不小于3、且不超过10的英文单词,长度超过10的只考虑前10个字母。
输入格式:
输入首先给出正整数N(≤100),为文件总数。随后按以下格式给出每个文件的内容:首先给出文件正文,最后在一行中只给出一个字符#,表示文件结束。在N个文件内容结束之后,给出查询总数M(
10的四次方),随后M行,每行给出一对文件编号,其间以空格分隔。这里假设文件按给出的顺序从1到N编号。
输出格式:
针对每一条查询,在一行中输出两文件的相似度,即两文件的公共词汇量占两文件总词汇量的百分比,精确到小数点后1位。注意这里的一个“单词”只包括仅由英文字母组成的、长度不小于3、且不超过10的英文单词,长度超过10的只考虑前10个字母。单词间以任何非英文字母隔开。另外,大小写不同的同一单词被认为是相同的单词,例如“You”和“you”是同一个单词。
思考:每个文件内的单词存放到单独的一个 set 中。询问时直接遍历其中一个 set(必须是 size 较小的那个,否则会超时在最后一个测试点),用 count() 查找另一个 set 中存不存在这个单词即可。