加工企业网站这么做,网站刷流量对网站有影响吗,优秀网站设计要素,做新闻类网站还有市场吗1.学习总结 1.1查找的思维导图 1.2 查找学习体会 1、map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小#xff0c;除了那个操作节点#xff0c;对其他的节点都没有什么影响。 对于迭代器来说#xff0c;可以修改实值#xff0c;而不能修改key。2、…1.学习总结 1.1查找的思维导图 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 题目17-1 QQ帐户的申请与登陆 2.2 设计思路伪代码或流程图 #includebits/stdc.h
#includeiostream
using namespace std;
定义mapstring,stringa;
int n,i;
char k[2],QQnum[12],password[25];//新老用户选择QQ号QQ密码
输入行数n
for i0 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 if2.3 代码截图 2.4 PTA提交列表说明。 这题主要是原来代码L和N的判断用的是字符c类型输入判断的但是输出结果一直不对看网上代码用的字符串数组来判断修改后就可以了。 2.1 题目26-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 (vT-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 代码截图 2.4 PTA提交列表说明。 部分正确一开始没有考虑到v T-Key || u T-Key时的情况导致部分测试点过不了增加条件即可。 2.1题目37-2 航空公司VIP客户查询 2.2 设计思路伪代码或流程图 int main(){int n,k,i;//n为查询人数k为最低里程输入n,kchar idcard[20];//定义身份证号long long flyway;//定义里程mapstring,long longMap;for i0 to n {输入身份证号输入里程数如果该用户里程数最低里程数 flywayk;if(!Map.count(idcard)) Map[idcard] 0;//不是会员Map[idcard]flyway;//累加里程数}输入要查询的人数nfor i0 to n {输入身份证号if(!Map.count(idcard)) 输出No Info\n//不是会员 else 输出该会员里程数}
} 2.3 代码截图 2.4 PTA提交列表说明。 这题参考网上的代码自己慢慢理解map怎么用的部分正确出现的问题主要是超时把所有cin改成scanf再把数组的大小改一下就通过了试着试着通过的一道题。 3.截图本周题目集的PTA最后排名 本次题目集总分175分 必做题共145分 3.1 PTA排名截图带自己名字的排名 (32林艺薇 3.2 我的总分145 4. 阅读代码必做1分 HashMap中红黑树的查找函数find()实现/** * 调用树的find()函数 */ final TreeNodeK,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 TreeNodeK,V find(int h, Object k, Class? kc) { TreeNodeK,V p this; do { int ph, dir; K pk; TreeNodeK,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提交记录截图 转载于:https://www.cnblogs.com/linyiwei/p/9094624.html