摘要:
前缀树里面可以存一堆字符串,也可以说是一堆单词,存完之后我们可以轻松判断一个指定的字符串是否出现过 下面我来详细解释一下实现细节 这里面的结点总数为单词个数和每一个单词最多包含的字符数的乘积。 sigma_size是单词字符的字符集大小,数字就是10,字母就是26 看ch之前我们先来理解一下sz,s 阅读全文
摘要:
你可能第一反应就是KMP算法,但是我们在这篇文章里面将它朴素实现。 假设给定的字符串为字符串a,模板串为字符串b 在字符串a的每一个字符的位置开始,来用字符串b一位一位去对,如果对不上了,就break,从a的下一个字符的位置开始一位一位对。 完整代码如下: 阅读全文
摘要:
校选赛中我出的一道题,放在了第二题的位置,题目的思路来源于在求解单词接龙这道题时,处理单词串拼接时的实现细节,方法有很多,这里介绍一种我想到的。 对于abc和bce,将他们拼在一起形成abcbce,之后去掉中间重叠的部分,就变成了abce,编程完成这一细节实现。 我们首先建立两个空子串,然后存一下两 阅读全文
摘要:
实数二分法求解一元三次方程 实数二分是最简单的二分,可以直接除以2!! 计算当前函数值和0进行比较,如果f(x)正好是0或者和0的距离很小,此时的x就算是方程的解,f(x)的计算很容易给出 接下来是递归二分部分,当然这里容易爆栈强烈建议使用非递归形式,懒得写了O(∩_∩)O 首先取x值中点m,然后判 阅读全文
摘要:
这份代码在ACM中不可用 对于一个将要分解的数,我们从小到大枚举它可能被分解出来的每一个因子,从小到大枚举,这样就可以保证在分解出大的因子之前,所有的小的因子全部被除完,从而保证最终所有的因子一定是质数。 虽然分解质因数本身没有进行质数判断,但是还是求出了质因数。。哈哈 通过代码可以看到,我们每分解 阅读全文
摘要:
对于一个幂,分为底数部分和指数部分,我们将指数部分写成二进制的形式。 比如说2的5次方,我们将5写成101,接下来我们从后往前看101的每一位二进制数是0还是1 如果是0,那么就直接让子结果自身平方即可,如果是1,就要让最终结果乘上当前的子结果,然后再将子结果自身进行平方。 子结果自身进行平方是一直 阅读全文
摘要:
第一种情况给定的集合是满状态的,也就是枚举2的n次方种状态下的每一种子集的情况。 这里的x是一个二进制数,其长度为n,取值为00000...00000~11111...11111的每一种状态。 这里的i的取值为1,10,100,1000,10000...其目的就是一个一个去试x中对应位置的元素是1还 阅读全文
摘要:
我们假设A数组是方案数组,P数组是模板数组。 对于每一种方案,从第一个位置开始放元素,一个一个放。 我们原有的打印全排列的方法是不允许A数组中出现重复元素的,如下代码所示: 解决方案如下 我们在放每一个元素的时候,对于当前将要放的元素P[i],需要考虑已经在A数组中放置的元素里面(A[0]~A[cu 阅读全文
摘要:
判断一个数n是不是质数,如果是返回1,否则返回0。这里加入了一个数学优化,只需要判断到根号n就好了。 完整代码如下,计数了0-10000的闭区间内有多少个质数。 阅读全文
摘要:
求最大公约数利用辗转相除法: 求最小公倍数时,利用两数的乘积除以这两个数的最大公约数即可: 完整代码如下,输入两个数n和m,输出这两个数的最大公约数和最小公倍数: 阅读全文