标签:哈希 3.2 编译 b树 clear find 截图 账户 令行
查找内容很多,像平均查找长度,平均二叉树插入删除时的调整,还有B树,哈希表,哈希冲突等重要内容,查找的内容也与我们平时生活联系很深。
本周还学习了Map,STL的一个容器,它提供一对一的hash,很多功能直接调用函数,很方便
建树
如果为空树则为二叉搜索树
如果无左右孩子也为二叉搜索树
如果左孩子不为空
利用循环找到左子树最右节点
如果该节点的值大于根节点的值,则不满足非空左子树的所有键值小于其根结点的键值,不是二叉搜索树
如果右孩子不为空
利用循环找到左子树最左节点
如果该节点的值小于根节点的值,则不满足非空右子树的所有键值大于其根结点的键值,不是二叉搜索树
利用递归继续判断其他节点
输入指令行数
输出指令
如果命令符为“L”
如果找不到该账号,输出ERROR: Not Exist
如果存在该账号
判断账户密码,如果正确,输出Login: OK,否则,输出ERROR: Wrong PW
如果命令符为“N”
如果找不到该账号,插入该新账号,输出New: OK
如果找到该账号,输出ERROR: Exist
格式错误(这个没什么好说明的。。。)
输入飞行记录行数N,最低里程K
循环输入N行飞行记录
判断已有记录中是否有当前身份证号码
如果没有,给里程值赋初值0
如果该记录里程值小于K大于0,里程值在原先基础上累加K
如果大于K,累加该记录里程值
循环结束
输入整数M
循环输入M行查询人的身份证号码
如果记录中没有该查询人,输出No Info
如果记录中有该查询人,输出其当前的里程累积值
循环结束
运行超时,一开始理解成不能满足大数据,是类型定义错误,但是改完还是错的。。。尝试了很久,实在找不出来问题,询问了炳辉大佬,他说把c++的输出输出换成c的。百度下得到的是“输入数字没有问题,如果输入非整形的话,cin流的状态会被破坏,无法继续输入,可以用cin.clear清一下流的状态,或者把输入的部分放入while循环,输入错误时退出”所以改用scanf,printf反而方便一点
代码链接:https://blog.csdn.net/chenhanzhun/article/details/39529425
代码链接:https://blog.csdn.net/mdl13412/article/details/6655581
这俩篇博客的注释都很详细,头文件里的东西很复杂,但是调用map.h后续功能的实现都很方便,像本章学习的查找,如果用树来实现,建树,再遍历查找,代码量很大,但是调用Map的话,利用insert()和find(),几句代码就可以实现了,具体操作不需要我们来完成,知道原理就可以了,比如find()函数,如果找到它会返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器
标签:哈希 3.2 编译 b树 clear find 截图 账户 令行
原文地址:https://www.cnblogs.com/tajiyu/p/9079607.html