首页 > 其他 > 详细

博客作业05-查找

时间:2018-05-26 20:56:16      阅读:341      评论:0      收藏:0      [点我收藏+]

1.学习总结(2分)

1.1查找的思维导图

技术分享图片

1.2 查找学习体会

谈谈你对查找算法学习体会。也可以谈谈STL容器中查找如何用的。

查找在方法上可分为一下几种类型
1. 顺序查找
2. 二分查找
3. 插值查找
4. 斐波那契查找
5. 树表查找
6. 分块查找
7. 哈希查找
针对不同的类型,并没有好与不好之分,有些方法只适用于特定环境,有些方法比较简单,但浪费时间,有些方法思路十分复杂,但节约时间,但是还是得用空间去抵,所以学会查找不仅仅是要去学各种查找方法的原理以及代码实现,更重要的是能够针对不同的环境和情形下选择正确的查找方式,同时C++的库函数里面也有许多自带函数,熟练运用可以事半功倍。
map工作原理:映射,相当于字典,把一个值映射成另一个值,如果想创建字典的话使用它好了, 底层采用的是树型结构,多数使用平衡二叉树实现,查找某一值是常数时间,遍历起来效果也不错, 只是每次插入值的时候,会重新构成底层的平衡二叉树,效率有一定影响.

2.PTA实验作业(4分)

2.1 题目1:6-2 是否二叉搜索树

2.2 设计思路(伪代码或流程图)

设计思路:利用中序遍历,如果是递增则成功,否则失败
bool IsBST(BinTree T) {
    int num[999],t=1;
    利用非递归方法进行中序遍历{
        将中序遍历得到的结果储存在数组num中;
    }
    for (int i = 1; num[i] != 0; i++)
    {
        如果发现后面数比前面小,即不是递增数列,t = 0;
    }
    return t;
}

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

技术分享图片

2.4 PTA提交列表说明。

技术分享图片

2.1 题目2:QQ帐户的申请与登陆

2.2 设计思路(伪代码或流程图)

设计思路:如果QQ号申请正确就插入,失败则提示,登陆时存在此QQ则成功,否则失败,也可用红黑树做
BinTree BST = NULL;int n, i = 0;char K[100001];User QQ[100001];
    输入 n;
    for (i = 0; i < n; i++) {
        输入QQ账号,密码;
    }
    int t = 0;
    for (i = 0; i < n; i++) {
        if (K[i] != ‘N‘)  t += 1;
    }
    if (t == 0) {
        for (i = 0; i < n; i++) {
            if((QQ号符合规定)
            cout << "New: OK" << endl;
            else cout << "ERROR: Exist"<<endl;
        }
        return 0;
    }
    for (i = 0; i < n; i++) {
        if (K[i] == ‘N‘) {
            if (QQ号或者密码不符合要求) {
                cout << "ERROR: Exist" << endl;
                continue;
            }
            else {
                插入QQ[i]
                cout << "New: OK" << endl;
                continue;
            }
        }
        else if (K[i] == ‘L‘) {
            if (找不到QQ[i]) {
                cout << "ERROR: Not Exist" << endl;
                continue;
            }
            else
            {
                if (找到) {
                    cout << "Login: OK" << endl;
                    continue;
                }
                else {
                    cout << "ERROR: Wrong PW" << endl;
                    continue;
}}}}

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

技术分享图片技术分享图片技术分享图片技术分享图片

2.4 PTA提交列表说明。

技术分享图片
部分正确:这道题由于时间复杂度比较紧张,所有全删除,且最大值这个点一直过不了,于是多加了一个if让他顺利通过

2.1 题目3: 航空公司VIP客户查询

2.2 设计思路(伪代码或流程图)

设计思路:利用红黑树,如果飞行距离不足500则补到500,然后插入,然后在里面找,如果找到输出飞行距离,找不到就NO info吧
    int N, K, i;char idcard[19];long long flyway;
    scanf("%d %d",&N,&K);
         map<string, long long>Map;
    for (i = 0; i < N; i++)
    {
        输入ID和飞行距离;
        飞行距离不足500则自动增加到500;
        if (找不到Map[idcard])) {
            初始化Map[idcard] = 0;
        }
        Map[idcard] += flyway;
    }
    scanf("%d",&N);
    for (i = 0; i < N; i++) {
        scanf("%s",idcard);
        if (找不到)
        {
        printf("No Info\n");
        }
        else
            输出飞行总和距离;
    }

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

技术分享图片

2.4 PTA提交列表说明。

技术分享图片
部分正确:利用C++的语法会导致时间不足支撑,讲C++的cin和cout全部改成scanf和printf就成功通过了

3.截图本周题目集的PTA最后排名(3分)

本次题目集总分:175分
必做题共:145分

3.1 PTA排名(截图带自己名字的排名)

技术分享图片

3.2 我的总分:163

本题评分规则:
(1)2个题目集PTA总分145--175分:3分(全部题目都做)
(2)PTA总分在120分--145分:2.5分(必做题全部做完,选做题做部分)
(3)PTA总分在105--120分:2分(必做题大部分做完)
(4)PTA总分在80--105分:1.5分
(5)PTA总分在45分-80分:1分
(6)PTA总分在45分以下:0分

  1. 阅读代码(必做,1分)
    ```

```
代码点评:

  1. 代码Git提交记录截图

在码云的项目中,依次选择统计-Commits历史-设置时间段,进行搜索并截图,如下图所示,需要出现学号、项目提交说明。请在码云中将你的昵称改为“学号-姓名”。

博客作业05-查找

原文:https://www.cnblogs.com/linyipeng/p/9078997.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!