DS博客作业07—查找

1.本周学习总结

1.1思维导图

1.2学习体会

本章学习了顺序表、树表、哈希表的查找方式,学会计算各种查找方式下的ASL
树表部分的b树和平衡二叉树较为复杂,哈希表相对容易掌握
期末要复习的有点多,最近代码打得太少,进度有点跟不上

2.PTA实验作业

2.1

是否二叉搜索树

2.1.1 设计思路

bool IsBST
    这只是个壳
bool isBSTReal //真·isBST
    if bt==NULL //该分支是二叉搜索树
        return true
    if 元素值超出min-max范围
        return false
    递归执行isBSTReal(左子树,min,bt->Data-1)和isBSTReal(右子树,bt->Data+1,max)

2.1.2 代码截图

2.1.3 本题PTA提交列表说明

递归代码left,right写反,导致正确的测试点不能过
一波递归写完发现给定函数没法递归,然后懒得不想重写,套了个壳交上去发现竟然有分
打了快一年PTA才发现函数题可以这么玩

2.2

航空公司VIP客户查询

2.2.1 设计思路

定义map类 airline
for i=0 to n
    输入用户,航程
    航程不满最小值替换为最小值
    用户,航程存入map类
for i=0 to n
    输入用户
    if 找到
        输出航程
    else
        输出No Info

2.2.2 代码截图


2.2.3 本题PTA提交列表说明

超时,超时,超时·······
对比了其它人的代码发现同样的思路使用scanf,printf可以压着时间过,查了一下资料

可以用ios::sync_with_stdio(false);取消cin cout 与 stdio 同步
强烈质疑测评机制有问题:原封不动的代码打个注释又超时了

2.3

二叉搜索树中的最近公共祖先

2.3.1 设计思路

int LCA
    调用Find判断两数是否都在树中
        否,return ERROR
    if 空树
        return ERROR
    while 树不空
        if 两数都小于元素值
            树指针指向左子树
        if 两数都大于元素值
            树指针指向右子树
        else
            返回指针指向的节点
int Find 
    if 空树
        return 0
    if 找到对应元素
        return 1
    if 元素值大于查找值
        递归在左子树中查找
    else
        递归在右子树中查找

2.3.2 代码截图


2.3.3 本题PTA提交列表说明

Q1.return ERROR直接用return -1
Q2.给定数字不在树中时错误
A2.加入Find函数判断给定数字是否在树中

3.阅读代码

3.1 题目

查找和最小的K对数字

3.2 解题思路

for i=0 to nums1.size()
    for j=0 to nums2.size()
        生成所有可能的数字对,两数字和为键,两数字为值,存入multmap
for 使用迭代器遍历multmap
    将前k个的值存入数组res中
    返回数组res

3.3 代码截图

3.4 学习体会

学习了pair的用法,multmap的部分用法,为课设做准备

posted @ 2019-06-16 17:45  KISAMKO  阅读(206)  评论(0编辑  收藏  举报