• 博客作业05--查找


    1.学习总结(2分)

    1.1查找的思维导图




    1.2 查找学习体会

    查找这块操作和代码量比较多,需要花时间去记,很烦 。。
    使用STL容器,让相同数据的累加不需要将数组初始化,直接进行累加,查找输入的数据是否已经存在也只需要一个语句就可以完成,代码简短了许多 , 用STL容器查找用数组的形式,将字符串设为数组地址,查找时直接用字符串查找。
    第一种:用count函数来判定关键字是否出现,其缺点是无法定位数据出现位置,由于map的特性,一对一的映射关系
    ,就决定了count函数的返回值只有两个,要么是0,要么是1,出现的情况,当然是返回1了
    第二种:用find函数来定位数据出现位置,它返回的一个迭代器,当数据出现时,它返回数据所在位置的迭代器,
    如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器,

    2.PTA实验作业(4分)

    2.1 题目1:6-3 二叉搜索树中的最近公共祖先

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

    int LCA( Tree T,  int u, int v )
    {
        如果树为空
            返回 ERROR ;
        如果 u,v不在数组内
            返回 ERROR ;
        如果 u或v有等于T->key 
            返回T->key
        如果一个在根节点左边一个在根节点右边
             返回T->key
        如果 u比T->key大 递归调用右子树
        如果 u比T->key小 递归调用左子树
    
    }
    int Search(Tree T , int u)  //查找元素是否存在于树内
    {
        如果树空
            返回 0 
        如果找到则返回 1 
        如果大于T->key 
            递归调用右子树
        如果小于T->key 
            递归调用左子树
    }
    
    

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

    2.4 PTA提交列表说明。

    只考虑一个大于根节点,一个小于根节点的情况和两个都小于根节点,两个都大于根节点情况 ,没有考虑到节点不在树内和节点不同层情况
    增加了一个寻找元素是否在树内的函数 ,解决

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

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

    map<string,int>p;   储存账号 和密码
    
    string ch,number,str;  //ch是新老用户 ,number是账号 , str是密码
    输入指令次数n
    while (n-- ) 
    {
        输入x,y,z ;
        如果是老用户
        {
            判断它是否存在 if(iter != mapStudent.end())
                不存在则printf("ERROR: Not Exist
    ");
             存在则判断密码是否正确if(mapStudent[number]==str)
                    正确输出printf("Login: OK
    ")  
                    错误输出printf("ERROR: Wrong PW
    ")  
        }
        如果是新用户
        {
                判断是否已经存在if(iter != mapStudent.end())
                    存在则输出printf("ERROR: Exist
    ");
                    不存在的话mapStudent[number] = str记录下密码 ; printf("New: OK
    "); 
        }
    
    }
    

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

    2.4 PTA提交列表说明。

    可能是这个语句出问题

    后来改为mapStudent[number] = str ; 插入元素

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

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

    定义字符串数组储存身份证	char identity[21] ;
    map<string , long long >customers ;储存客户信息
    输入顾客数n 和最低旅程 k
    while (n--)
    {
        输入身份证和里程数
        当mile小于k时令mile = k ;
        累加里程数customers[identity] += mile ;
    }
    输入查询人数n
    while(n--)
    {
        判断是否存在if(iter != customers.end()) 
            当该顾客存在时输出他的里程数
            不存在时输出No Info
    
    }
    
    

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

    2.4 PTA提交列表说明。

    开始输入用户身份证用的是string 型 ,导致错误,后来改为字符串数组
    ,还有将cin,cout改为scanf和printf,才通过

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

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

    3.2 我的总分 : 2.5

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

    埃拉托斯特尼筛法
    Count the number of prime numbers less than a non-negative number, n

    //http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes  
    class Solution {  
    public:  
        int countPrimes(int n) {  
            if(n <  2)  
                return 0;  
            vector<int> isPrime(n,1);  
            isPrime[0] = 0;  
            isPrime[1] = 0;  
            int count = 0;  
            for(int i = 2;i<n;++i)  
            {  
                if(isPrime[i] == 1)  
                {  
                    ++count;  
                    if(i>sqrt(n))  
                        continue;  
                    for(int j = i*i;j<n;j+=i)  
                    {  
                        isPrime[j] = 0;  
                    }  
                      
                }  
            }  
              
            return count;  
              
        }  
    };  
    

    中心思想就是,从2的倍数开始,反复的将素数的倍数标记为非素数。

    给定的一个素数p的倍数构成一个从p开始的序列,相邻元素之间的差值为p。这是筛法与一般方法的关键区别

    5. 代码Git提交记录截图

  • 相关阅读:
    【SqlSugarCore】SqlSugarScope的异步上下文问题
    web系统国际化思路
    mac iterm2 报错“iterm2_precmd:type:50”解决
    Atcoder 123C 1, 2, 3
    Atcoder 123D Yet Another Sorting Problem
    Atcoder 124F Chance Meeting
    Atcoder 212D Querying Multiset
    Atcoder 212E Safety Journey
    Atcoder 212F Greedy Takahashi
    Atcoder 212G Power Pair
  • 原文地址:https://www.cnblogs.com/FOXES/p/9094562.html
Copyright © 2020-2023  润新知