博客作业05--查找

1.学习总结

1.1查找的思维导图

1234123-20180528003538745-842608186.gif

1.2 查找学习体会

  • 1、map简介
    map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。
    对于迭代器来说,可以修改实值,而不能修改key。
  • 2、map的功能
    自动建立Key - value的对应。key 和 value可以是任意你需要的类型。
  • 3、查找方式及使用
    目前知道的有map.find(关键字) 和 map.count(关键字)两种,使用count,返回的是被查找元素的个数。如果有,返回1;否则,返回0。注意,map中不存在相同元素,所以返回值只能是1或0。使用find,返回的是被查找元素的位置,没有则返回map.end()。

2.PTA实验作业(4分)

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

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

#include<bits/stdc++.h>
#include<iostream>
using namespace std;
定义map<string,string>a;
int n,i;
char k[2],QQnum[12],password[25];//新老用户选择,QQ号,QQ密码
输入行数n
for i=0 to n输入选择k如果是老用户输入QQnum,passwordif(a[QQnum].empty()){//不存在 输出"ERROR: Not Exist\n"}else{如果密码正确,输出"Login: OK\n"否则 输出"ERROR: Wrong PW\n"}end if如果是新用户 输入QQnum,passwordif(a[QQnum].empty()){//不存在 a[QQnum]=password;//创建账号输出"New: OK\n"}else{//存在 输出"ERROR: Exist\n"//账号已存在}end if

2.3 代码截图

1234123-20180526230509138-6223559.png

2.4 PTA提交列表说明。

1234123-20180526230543017-459929334.png

这题主要是原来代码L和N的判断用的是字符c类型输入判断的1234123-20180526230557230-1515866237.png,但是输出结果一直不对1234123-20180526230714936-1618697627.png,看网上代码用的字符串数组来判断,修改后就可以了。

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

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

int LCA( Tree T, int u, int v ){//找最近公共祖先如果调用Find函数发现是空树或者找不到 返回ERRORif(v == T->Key || u == T->Key)    return T->Key;if v节点和u节点分别在T->Key两侧 return T->Key;return   (v<T->Key?(LCA(T->Left,u,v)):(LCA(T->Right,u,v)));
}
int Find(Tree BST, int X) {//在树种寻找X节点if (!BST) return 0;if 在树中找到该节点 返回1if (X > BST->Key) {return Find(BST->Right, X);//从该节点的右孩子继续查找}else if (X < BST->Key) return Find(BST->Left, X);//从做孩子就继续查找
}

2.3 代码截图

1234123-20180528004536444-1613640831.png

2.4 PTA提交列表说明。

1234123-20180528004547099-1303738059.png
部分正确:一开始没有考虑到v == T->Key || u == T->Key时的情况,导致部分测试点过不了,增加条件即可。

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

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

int main(){int n,k,i;//n为查询人数k为最低里程输入n,kchar idcard[20];//定义身份证号long long flyway;//定义里程map<string,long long>Map;for i=0 to n {输入身份证号输入里程数如果该用户里程数<最低里程数 flyway=k;if(!Map.count(idcard)) Map[idcard] = 0;//不是会员Map[idcard]+=flyway;//累加里程数}输入要查询的人数nfor i=0 to n {输入身份证号if(!Map.count(idcard))    输出"No Info\n"//不是会员 else 输出该会员里程数} 
} 

2.3 代码截图

1234123-20180528004123766-7632260.png

2.4 PTA提交列表说明。

1234123-20180528004222854-1126109869.png
这题参考网上的代码自己慢慢理解map怎么用的,部分正确出现的问题主要是超时,把所有cin改成scanf,再把数组的大小改一下,就通过了,试着试着通过的一道题。

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

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

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

1234123-20180526225040715-1649880207.png

(32林艺薇)

3.2 我的总分:145

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

  • HashMap中红黑树的查找函数find()实现
/** * 调用树的find()函数 */  final TreeNode<K,V> getTreeNode(int h, Object k) {  return ((parent != null) ? root() : this).find(h, k, null);  }  
[java] view plain copy/** * 从根节点p开始查找指定hash值和关键字key的结点 * 当第一次使用比较器比较关键字时,参数kc储存了关键字key的 比较器类别 */  final TreeNode<K,V> find(int h, Object k, Class<?> kc) {  TreeNode<K,V> p = this;  do {  int ph, dir; K pk;  TreeNode<K,V> pl = p.left, pr = p.right, q;  if ((ph = p.hash) > h)           //如果给定哈希值小于当前节点的哈希值,进入左节点  p = pl;  else if (ph < h)             //如果大于,进入右结点  p = pr;  else if ((pk = p.key) == k || (k != null && k.equals(pk)))  //如果哈希值相等,且关键字相等,则返回当前节点  return p;  else if (pl == null)        //如果左节点为空,则进入右结点  p = pr;  else if (pr == null)        //如果右结点为空,则进入左节点  p = pl;  else if ((kc != null ||  (kc = comparableClassFor(k)) != null) &&  (dir = compareComparables(kc, k, pk)) != 0)        //如果不按哈希值排序,而是按照比较器排序,则通过比较器返回值决定进入左右结点  p = (dir < 0) ? pl : pr;  else if ((q = pr.find(h, k, kc)) != null)       //如果在右结点中找到该关键字,直接返回  return q;  else  p = pl;                             //进入左节点  } while (p != null);  return null;  } 

链接:https://blog.csdn.net/ymrfzr/article/details/51243766
函数注释很详细,find()函数里有对多种情况进行讨论,直接调用map.h后续功能的实现就很方便,像查找,如果用树来实现,建树,再遍历查找,代码量很大,但是调用Map的话,利用find(),代码精简了很多,我们只要知道原理就可以了。find()函数原理:如果找到会返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。

5. 代码Git提交记录截图

1234123-20180526224536786-1827597659.png

转载于:https://www.cnblogs.com/linyiwei/p/9094624.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dubbo的优化 --- 开发时使用

开发时的三个优化&#xff1a; 1、开发者在本地开发的时候启动Dubbo比较麻烦&#xff0c;所以采用直接连接的配置&#xff1b; 2、开发者本地开发时会打断点调试&#xff0c;会超过Dubbo默认的超时时间1s&#xff0c;所以需要全局设置超时时间&#xff1b; 3、开发者本地时可能…

Code:目录

ylbtech-Code&#xff1a;目录1.返回顶部 1、https://github.com/2.返回顶部1、https://gitee.com2、3.返回顶部4.返回顶部5.返回顶部 6.返回顶部作者&#xff1a;ylbtech出处&#xff1a;http://ylbtech.cnblogs.com/本文版权归作者和博客园共有&#xff0c;欢迎转载&#xff…

Redis主从实战

为了提升redis高可用性&#xff0c;除了备份redis dump数据之外&#xff0c;还需要创建redis主从架构&#xff0c;可以利用从将数据库持久化&#xff0c;&#xff08;我们所说的数据持久化将是将数据保存到写磁盘上&#xff0c;保证不会因为断电等因素丢失数据&#xff09; Red…

Python Day 21 面向对象 (面向对象的三大特性(二)继承,多态,封装,几个装饰器函数)...

Python Day 21 面向对象 (面向对象的三大特性&#xff08;二&#xff09;继承&#xff0c;多态&#xff0c;封装&#xff0c;几个装饰器函数) https://mubu.com/doc/1AqL_M0IbW 继承之钻石继承 多态 封装 几个装饰器函数 classmethod 可以通过类使用被装饰的方法staticmethod …

php webservice 上传,PHP实现WebService服务

第一步&#xff0c;安装PHP扩展SOAP并开启扩展&#xff0c;是否开启成功以phpinfo为准。第二步&#xff0c;创建服务端文件server.php{public functionhello(){return "Hello World!";}public function sum($num1,$num2){return $num1$num2;}}//创建 SoapServer 对象…

配置springboot在访问404时自定义返回结果以及统一异常处理

在搭建项目框架的时候用的是springboot&#xff0c;想统一处理异常&#xff0c;但是发现404的错误总是捕捉不到&#xff0c;总是返回的是springBoot自带的错误结果信息。 如下是springBoot自带的错误结果信息&#xff1a; 1 { 2 "timestamp": 1492063521109, 3 &…

nginx配置php 9000,Nginx支持php配置

Nginx本身是不支持对外部程序的直接调用或者解析&#xff0c;所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux 下是socket&#xff0c;(这个socket可以是文件socket&#xff0c;也可以是ip socket)。为了调用CGI程序&#xff0c;还需要一个FastCGI的wra…

ansible 判断和循环

标准循环 模式一 - name: add several usersuser: name{{ item }} statepresent groupswheelwith_items:- testuser1- testuser2 orwith_items: "{{ somelist }}" 模式2. 字典循环- name: add several usersuser: name{{ item.name }} statepresent groups{{ item.g…

php require 500,thinkphp5出现500错误怎么办

thinkphp5出现500错误&#xff0c;如下图所示&#xff1a;require(): open_basedir restriction in effect. File(/home/wwwroot/pic/thinkphp/start.php) is not within the allowed解决方法&#xff1a;1、我是lnmp1.4 php5.6&#xff0c;php.ini里面的open_basedir 是注释掉…

如何创建路径别名

在访问页面时&#xff0c;页面地址会以 DocumentRoot所指定的路径为相对路径&#xff0c;但若不想使用指定的路径&#xff0c;则需要创建路径别名。假如DocumentRoot为/var/www/html &#xff0c;现想将/var/www/html/mail 建立别名/web/mail&#xff0c;该如何修改呢&#xff…

33 -jQuery 属性操作,文档操作(未完成)

转载于:https://www.cnblogs.com/venicid/p/9110130.html

Robot Framework + Selenium library + IEDriver环境搭建

转载&#xff1a;https://www.cnblogs.com/Ming8006/p/4998492.html#c.d 目录&#xff1a; 1 安装文件准备2 Robot框架结构3 环境搭建 3.1 安装Python 3.2 安装Robot Framework 3.3 安装wxPython 3.4 安装RIDE 3.5 安装Selenium2Library 3.6 安装IEDriverServer 1 安装文…

php静态地图api,静态图API | 百度地图API SDK

百度地图静态图API&#xff0c;可实现将百度地图以图片形式嵌入到您的网页中。您只需发送HTTP请求访问百度地图静态图服务&#xff0c;便可在网页上以图片形式显示您的地图。静态图API较之JavaScript API载入的动态网站&#xff0c;既能满足基本的地图信息浏览&#xff0c;又能…

[XMOVE自主设计的体感方案] XMove Studio管理系统(二)应用开发API简要介绍

一. XMove的开放式应用开发框架简介 XMove4.0以开放式的结构满足扩展性的要求。所有无线协议&#xff0c;底层算法和控制逻辑全部上移到PC端。节点只根据接受的控制逻辑返回传感器数据。新的架构使得开发新应用非常方便。 本节将主要介绍XMove应用开发API及其使用。 二. 注册新…

搭建服务器Apache+PHP+MySql需要注意的问题

参见https://www.cnblogs.com/bytebull/p/7927542.html 一、软件下载的都是用zip压缩文件&#xff0c;三个软件均需手动配置&#xff0c;若想省事&#xff0c;可考虑phpstudy&#xff0c;一键安装。 我的服务器文件目录&#xff1a; 二、安装PHP时需注意&#xff0c;新版本的PH…

php行为日志,利用ThinkPHP的行为扩展做系统日志

1&#xff1a;模块配置&#xff1a;return array(action_end > array(Admin\\Behaviors\\LogBehavior),);2&#xff1a;数据库建表&#xff1a;create table logs(id int(11) primary key auto_increment,url char(30) not null,operator int(11) not null,description char…

nagios搭建(一):nagios3.2的搭建

此文章的大多地方采用的是elain的博客内容&#xff1a;http://elain.blog.51cto.com/3339379/711549小部分内容是自己的从别的文章总结过来的&#xff0c;已经试验过了1.需要的软件包&#xff1a;nagios-3.2.0.tar.gz nagios的主软件包nagios-cn-3.2.0.tar.…

0530JavaScript基础2

常用内置对象 所谓内置对象就是ECMAScript提供出来的一些对象&#xff0c;我们知道对象都是有相应的属性和方法 数组Array&#xff08;部分相当于列表&#xff09; 1.数组的创建方式 var colors [red,color,yellow]; 使用构造函数&#xff08;后面会讲&#xff09;的方式创建 …

.net mvc 超过了最大请求长度 限制文件上传大小

在我们的项目中遇到"超过了最大请求长度"如下图所示,是因为IIS默认请求长度4M,当请求长度大于这个值的时候报错,下面是解决方案. 解决方案:修改web.config文件 1、注意在mvc中有两个web.config文件&#xff0c;如下图&#xff0c;一个位于Views下&#xff0c;是用来控…

分布式之缓存击穿

什么是缓存击穿 在谈论缓存击穿之前&#xff0c;我们先来回忆下从缓存中加载数据的逻辑&#xff0c;如下图所示 因此&#xff0c;如果黑客每次故意查询一个在缓存内必然不存在的数据&#xff0c;导致每次请求都要去存储层去查询&#xff0c;这样缓存就失去了意义。如果在大流量…