随笔分类 -  PAT

摘要:因为这道题晴神给出模板了,所以水过,顶多就是调试加深下理解 小结一下,AVL 插入先写出 BST 插入的基本模板(而 BST 插入就是在查找基础上修改的,所以最终还是 BST 查找的模板): /* 伪码 */ void bst_search(node_t *root, int val) { /* 死 阅读全文
posted @ 2021-02-22 23:16 幼麟 阅读(84) 评论(0) 推荐(0)
摘要:这道题就是所有树的知识点的集大成 思路大概是: /* 伪码 */ //1. 利用下标建树————dfs() //2. 填充树的数据域————先序遍历 //3. 输出————层序遍历 第一点,利用下标建树见题图。也就是先不管结点的数据域而先把指针域链接起来: 第二点,填充树结点数据域,观察可以发现先序 阅读全文
posted @ 2021-02-21 22:03 幼麟 阅读(48) 评论(0) 推荐(0)
摘要:这道题关键在于判断一棵树是不是 BST 现在题目给出了树的先序序列——我们可以知道这棵树的根,然后题目也给出了 BST 的定义——左子树 < 根 ≤ 右子树(BST 镜像则是 左子树 ≥ 根 > 右子树),那么就可以确定左子树、根、右子树,从而确定这棵二叉树。 所以我们可以通过根和根后续结点确定这棵 阅读全文
posted @ 2021-02-21 19:12 幼麟 阅读(59) 评论(0) 推荐(0)
摘要:这几道题都是一般树的遍历(DFS知识点)所以放在一起水过了;但遗憾的是我的 A1079 和 A1090 都是 PA,不过还是先记录下思路,刷完全部知识点再回头来看下细节 我对于一般树遍历的知识点主要关注 3 个地方,这 3 个地方找出来基本就能解: //1. 结构体定义 //2. 输入 //3. d 阅读全文
posted @ 2021-02-21 11:44 幼麟 阅读(89) 评论(0) 推荐(0)
摘要:题目大概是打印符合条件的,从根 -> 叶子的路径的权值 我的思路大概是:DFS() 从根遍历到叶子,同时记录权值 1、因为要遍历同时记录权值,所以当前结点需要有变量能记录权值(从根到当前结点的累加权值),所以结构体看起来像这样: struct node_t { int weight; int tot 阅读全文
posted @ 2021-02-20 20:31 幼麟 阅读(45) 评论(0) 推荐(0)
摘要:思路如下: 通过观察题目可以发现 "Pop" 的就是中序序列打印出来的数据如题意给出即中序序列为 "3 2 4 1 6 5"。但问题是我当前 "Pop" 比如打印 3,前面 1 和 2 都是 3 的祖先,这应该用什么方法在未确定祖先的情况下打印子孙结点——我想到了递归,递归就是把一件事先走到最底做, 阅读全文
posted @ 2021-02-19 21:42 幼麟 阅读(50) 评论(0) 推荐(0)
摘要:因为晴神上有模板,所以直接水过了。 思路是先确定根结点,再确定左子树和右子树。确定根结点用前序、后序或层序,这些都是用来确定根结点的;下一步就是在中序序列中找到根结点的坐标位置,通过这个坐标确定左子树长度从而确定左子树和右子树。 需要注意的是申请结点空间是在 node_t *create() 函数里 阅读全文
posted @ 2021-02-18 22:52 幼麟 阅读(77) 评论(0) 推荐(0)
摘要:一开始照着二维数组的逻辑去做,按照周围八个点的顺序遍历,居然 PA 也有 21 分... 后来自己找了好几个例子仍然没办法通过,这一看晴神的解析才发现这题是按三维数组去做的,而且遍历顺序是题目 Figure-1 的那 6 个点,emmm 三维数组大致如下( z 轴我只画了两层): 然后基本上套模板就 阅读全文
posted @ 2021-02-17 18:39 幼麟 阅读(60) 评论(0) 推荐(0)
摘要:这道题我是根据晴神 DFS() 这一节给出的两个例子归纳的模板 AC 的,但实际上剪枝还不够完美 :-( 先说晴神 DFS 小节第一个例子: 有 n 件物品,每件物品的重量为 w[i],价值为 c[i]。现在需要选出若干件物品放入一个容量为 V 的背包中,使得在选入背包的物品重量和不超过容量 V 的 阅读全文
posted @ 2021-02-15 19:06 幼麟 阅读(118) 评论(0) 推荐(0)
摘要:春节回到家就颓了好久天 ;-( ,现在继续刷题 这道题一开始 PA,思路如下: 根据输入元素建立单链表,然后从后往前遍历(因为题目要找 suffix,所以如果有后缀那两条链后面几个元素肯定是相同的),如果当前元素的下一个元素不相等,那么当前元素就是所求。这种情况用头插法比较合适,也就是反过来入栈,最 阅读全文
posted @ 2021-02-12 23:18 幼麟 阅读(42) 评论(0) 推荐(0)
摘要:根据题意作出思考如下图: 可以发现,这个 fatest mouse 的筛选是一层一层下来的,每一层都将数组分为两部分——一部分继续下一轮筛选而另一部分执行记下排名就行。所以很自然能想到每一轮都会产生中间数据,这些中间数据需要变量记录下来,所以进一步思考如下图: 遍历原数组,筛选出的下一轮数据保存到影 阅读全文
posted @ 2021-02-04 23:21 幼麟 阅读(58) 评论(0) 推荐(0)
摘要:思路如下: /* 伪码 */ //入栈序列即 1, 2, 3, ..., N 那个序列 //出栈序列即输入的序列 for (遍历整个出栈序列) { while (stack.size() <= M) { if (栈空) stack.push(从固定的入栈序列依次取走一个元素); if (stack. 阅读全文
posted @ 2021-02-02 23:09 幼麟 阅读(55) 评论(0) 推荐(0)
摘要:思路如下: 比如我用户输入一个用 "Yue Chen" 来搜索,可以找到 id 为 "1111111" 和 "3333333" 两本书,那实际上就是映射了,而且是一个对应多个的映射,自然就想到了用从 string 到 vector<string> 的映射了 基于这个思路,我又是这样展开想的: /* 阅读全文
posted @ 2021-02-01 22:22 幼麟 阅读(50) 评论(0) 推荐(0)
摘要:思路如下: 每个 word 视为一个键,然后每枚举一个该键字符,该键相对应的值就加一。即取 string 到 int 的映射 /* 伪码 */ for (枚举每个字符) { if (当前字符是 alpha cha) { if (是大写) 键 = 键 + 其小写 else 键 = 键 + *it } 阅读全文
posted @ 2021-01-31 20:11 幼麟 阅读(76) 评论(0) 推荐(0)
摘要:思路如下: 由于「相似度 = 共有元素 / 所有元素」 我的思路是「共有元素 = 两集合所有元素 - 两集合不重复元素」,比如集合一 {87, 99 , 101},集合二去重后 {5, 87, 101} 共 6 个元素,而两集合不重复元素 {5, 87, 99, 101} 共 4 个元素,那么这两个 阅读全文
posted @ 2021-01-31 16:26 幼麟 阅读(97) 评论(0) 推荐(0)
摘要:如何判断两个串是否相等? 如图所示,观察题目给的 sample。只要红色方框和红色圈圈中这两部分内容相同那就可以下结论这两个串相等,其中: 红色方框内容比较直观,就是从第一个有效位开始至到 n 位 而红色圈圈内容可能不太容易看出,但其实是和第一个有效位以及小数点有关的,这里就是「小数点 - 第一个有 阅读全文
posted @ 2021-01-31 15:48 幼麟 阅读(59) 评论(0) 推荐(0)
摘要:本来这道题思路很简单(思路见代码注释),但由于设置了内存限制,暴力解会超时 //第一次提交超时#include <cstdio> #include <cstring> #define MAX_STU 26 * 26 * 26 * 10 static struct cou_t { int nam[20 阅读全文
posted @ 2021-01-24 23:01 幼麟 阅读(99) 评论(0) 推荐(0)
摘要:思路是将正数和负数分开求解,如下: 1. 对正数部分求乘积:i, j 从头开始遍历,当二者之一遇到负数就退出 2. 记录第一个负数出现的位置,然后 i, j 改为两数组最后一个元素。 因为负数是绝对值大的排序排在后面,求乘积先取大的,所以从后往前遍历: 3. 对负数部分求乘积,原理同1 伪码如下: 阅读全文
posted @ 2021-01-17 16:22 幼麟 阅读(87) 评论(0) 推荐(0)
摘要:思路如下: /* 伪码 *///1. 输入并区分 N1 还是 N2,略//2. 求另一个数的最小进制:位序列上最大的数while (遍历另一个数所有的位) { 这一位的数值 = hash_val(这一位的字符); if (该位数值比其他所有的位的数值都要大) 更新这个数的进制}//3. while 阅读全文
posted @ 2021-01-17 16:12 幼麟 阅读(81) 评论(0) 推荐(0)
摘要:思路如下 /* 伪码 */ //1. 读入 shop_owner 拥有的小球并记录哈希值 while (ch = scanf()) hash_val(ch)++; //2. 读入 eva 拥有的小球并进行相应处理 while (ch = scanf()) { hash_val(ch)--; if ( 阅读全文
posted @ 2021-01-17 15:28 幼麟 阅读(70) 评论(0) 推荐(0)