做题中运用到的一些计算公式和规律总结(未完)
1、从n个不同元素中选取m个元素的所有组合的个数:组合数Cnm=n!/(m!*(n-m)!)
2、一个n*m的矩阵中,边长为x的正方形有(n-x+1)*(m-x+1)个,矩形(包括正方形)有(1+n)*(1+m)*(n+m)/4 个
3、斐波那契数列:f[1]=1,f[1]=1,f[2]=2,f[3]=3·······f[n]=f[n-1]+f[n-2]
4、唯一分解定理:N=p1c1p2c2···pmcm (其中ci都是正整数,pi都是质数且满足p1<p2···<pm)
N的正约数个数=∏i=1m(ci+1) ∏表示连乘积符号
N的所有正约数之和=∏i=1m(∑j=0ci(pi)j) ∑表示连加符号
5、最大公约数:gcd(a,b)=gcd(b,a-b)=gcd(a,a-b)=gcd(a,a mod b)
6、Catalan数列,给定n个0和1,它们按照某种顺序排成长度为2n的序列,满足任意前缀中0的个数都不少于1的个数的序列的数量:Catn=1/(n+1)*C2nn
与Catalan数相关的问题:
(1)n个左括号和n个右括号组成的合法括号序列的数量
(2)1,2···n经过一个栈,形成的合法出栈序列的数量
(3)n个节点构成的不同二叉树的数量
(4)在平面直角坐标系上,每一步只能向上或向右走,从(0,0)走到(n,n)并且除两个端点外不接触直线y=x的路线数量为2Catn-1
7、对于一棵树,给定前序遍历和后序遍历,无法唯一确定树的形状,但中序遍历的序列总数我们却可以求出:2^只有一个儿子的节点数
求只有一个儿子的节点数的方法:当在前序序列中有AB,后序序列中有BA时,则这个节点只有一个儿子。所以开双层循环,一层循环前序,一层循环后序,就能找完满足要求的节点