递推杂模型

重新看了一下递推课件,一些新看懂的模型:

汉诺塔

f[i]为i个盘,借助第三根柱子转移到另一根上 的最小步数
必定经过这三步:
1.先将2..i从a->b,借助c,f[i-1]步
2.再将1从a->c,1步
3.将2..i从b->c,借助a,f[i-1]步

f[i]=2[i1]+1 f[i]=2i1

错排问题

n个人n本书,每个人的书都要和原本不同, 求方案数:
设f[i]表示n=i的答案。
1. 若第n个人与第x (1<=x<n) 个人互换书本,则方案数为f[n-2]
2. 若第n个人拿的书本是x,但x没有拿n的书本,则n的书本不能放在x手上(否则就是情况1),则相当于n-1个人n-1本书,答案f[n-1]
并且x有n-1种选取方法,因此 f[i]=(f[i1]+f[i2])(i1)

卡特兰数

http://blog.csdn.net/jokerwyt/article/details/77414853
凸多边形剖分:
设f[i]为i边形答案。
选边1,2,再选3..n任意一个,连成三角形。
那么左右两边分别是两个需要继续剖分的多边形。递推式列一下就是卡特兰数的第二种式子。

整数分解问题

把正整数N分解成M个正整数的和,M个加数相同但顺序不同认为是相同的方案,要求总方案数。如3=1+2跟3=2+1是两个相同的方案。
每次新建一个数,或给前面数全部加一.

猜你喜欢

转载自blog.csdn.net/jokerwyt/article/details/79450385