![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 74
知识类
麦片老板
Please show the code
展开
-
字符串算法:字典树trie
字典树trie1. 原理先看一张图看不懂很正常如果你看懂了,那么原理就可以直接跳过比如说我们现在有几个字符串ininninttotentea我们想知道te是哪几个字符串的前缀?这个时候我们显然可以一个一个去比较,但是这样的效率有点低,我们也可以想到用字符串hash去比较,但是这样的效率还是有点低这个时候字典树就排上用场了字典树 说白了 就是一个字典和我们平时查英语的字典一样,比如我们现在要去查一个单词hello我们首先第一个动作一定是放到 H 开头的那一页再去放到原创 2021-07-10 22:32:33 · 164 阅读 · 0 评论 -
字符串hash
字符串hash原理我的理解是:这是一种很玄学的字符串匹配算法比如我们现在有一个字符串:str = "abcde"通过一个hash函数,我们假设为int mhash() [为什么要写成mhash?因为hash()在库函数已经有了]那我们得到的str的哈希值str_hash = mhash(str)接下来是mhash的实现代码:听说这种是比较不会发生冲突的了typedef unsigned long long ull; // 因为hash值一般都很大,所以我们采用ullull mhash(cha原创 2021-07-02 23:02:44 · 175 阅读 · 0 评论 -
字符串算法: AC自动机
AC自动机AC自动机 = KMP + Trie原理如果你还没看过kmp和trie,那我建议你先去看一下,因为这样会比较容易理解本文图片和灵感均来自https://blog.csdn.net/bestsort/article/details/82947639我在学AC自动机时,是直接先看题的,这里有一道入门模板题,我们先来看一下入门模板题这道题的意思是说:给你多个模式串S ,然后再给你一个文本串T,让你在T中找有多少个不同的模式串出现过比如:模式串有4个:ash,shex,sha,bcd文原创 2021-06-26 23:11:11 · 198 阅读 · 0 评论 -
实验课--E-二叉树的中后序遍历构建及求叶子
二叉树的中后序遍历构建及求叶子写完这道题之后,你对树的理解应该会更加深刻题目描述按中序遍历和后序遍历给出一棵二叉树,求这棵二叉树中叶子节点权值的最小值。输入保证叶子节点的权值各不相同。输入第一行输入一个整数t,表示有t组测试数据。对于每组测试数据,首先输入一个整数N (1 <= N <= 10000),代表二叉树有N个节点,接下来的一行输入这棵二叉树中序遍历的结果,最后一行输入这棵二叉树后序遍历的结果。输出对于每组测试数据,输出一个整数,代表二叉树中叶子节点权值最小值。样原创 2021-05-05 16:29:51 · 1093 阅读 · 3 评论 -
IDA* 与 A* 与uva1343
IDA* 和 A*故事背景练习紫书的过程中遇到了一个问题:uva1343经过日日夜夜的思考,决定去学习一下IDA*扩充自己的知识库本文参考了大佬的博客:A与IDA的奇妙之旅原理对IDA*我个人理解是:有方向的暴力搜索 【乍一想,有一点点人工智能的感觉哈哈哈】很神奇,搜索的路径大概会是这样的,具体可以参考A与IDA的奇妙之旅可以认为是,你在走一步之前多了个判断:判断走哪里会比较近,先从近的走 ,这样就可以减少搜索的次数有个函数是这样的F(x)=G(x)+H(x)F(x)=G(x)+H(x原创 2020-08-26 14:29:30 · 165 阅读 · 0 评论 -
欧几里得求最大公约数
欧几里得算法(gcd),辗转相除法辗转相除法是用于求出两数的最大公约数的算法。它的具体做法是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。123456 和 7890 的最大公因数是 6,这可由下列步骤(其中,“a mod b”是指取 ...原创 2020-07-30 16:47:00 · 263 阅读 · 0 评论 -
快熟幂运算
快熟幂运算原理有2^99 = 2^50 * 2^49 = 2^25 * 2^25 * 2^25 * 2^24 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2......又 2^99 [十进制 ] = 2 ^ (1100011) [转换为2进制]所以所以 2^99 [十进制 ] = 2^(1000000) * 2^(100000) * 2^(11) [转换为2进...原创 2020-08-22 18:23:00 · 110 阅读 · 0 评论