在网上看到一个关于递推求解的课件,感觉里面的问题很经典有趣,层层递进,因此在这里记录一下。
1、在一个平面上有一个圆和n条直线,这些直线中的每一条在圆内同其他直线相交,假设没有三条直线相交于一点,试问这些直线将圆分成多少区域。
2、平面上有n条折线,问这些折线最多能将平面分割成多少块?(已知1—>2,2—>7)
3、设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好交于两点,且任何三条封闭曲线不相交于同一点,问这些封闭曲线能把平面分割成的区域个数。
4、在2*n的长方形方格中,用n个1*2的骨牌铺满方格,例如n = 3 时,为2*3方格,骨牌的铺设方案有三种,问对于n,铺设方案的总数是多少。
5、有一个1*n的一个长方形,用1*1、1*2、1*3的骨牌铺满方格。例如当n = 3 时为1*3的方格,此时用1*1,1*2,1*3的骨牌铺满方格,共有四种铺法。问对于n,铺设方案的总数是多少。
6、There are many students in PHT School. One day, the headmaster whose name is PigHeader wanted all students stand in a line. He prescribed that girl can not be in single. In other words, either no girl in the queue or more than one girl stands side by side. The case n=4 (n is the number of children) is like FFFF, FFFM, MFFF, FFMM, MFFM, MMFF, MMMM Here F stands for a girl and M stands for a boy. The total number of queue satisfied the headmaster’s needs is 7. Can you make a program to find the total number of queue with n children? 懒得翻译了:~
7、有排成一行的n个方格,用红、绿、蓝三原色给每个格子上色,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色。求全部的满足要求的涂法。
8、某人写了n封信,还有n个信封,如果所有的信都装错了信封,求共有多少种可能的情况?
————————————————————————^^我是漂亮的分割线^^————————————————————————
参考答案:
1、F(1) = 2; F(n) = F(n-1) + n 通项:F(n) = n(n+1)/2 + 1
2、F(1) = 2; F(n) = F(n-1) + 4(n-1) + 1 通项:F(n) = 2n^2 - n + 1
3、F(1) = 2; F(n) = F(n-1) + 2(n-1) 通项:F(n) = n^2 - n + 2
4、考虑最后一个格的铺法,容易得到:F(1) = 1, F(2) = 2; F(n) = F(n-1) + F(n-2), n≥3
5、仍然是考虑最后一个格的铺法,有:F(1) = 1, F(2) = 2, F(3) = 4; F(n) = F(n-1) + F(n-2) + F(n-3), n≥4
6、根据最后一个人的性别分情况讨论(设F(n)表示n个人的合法队列)。如果是男生,直接站在队列的最后,有F(n-1)种情况。如果是女生,则最后两个人必须都是女生,再分类:如果队列的前n-2个人是合法的队列,在队列后面追加两个女生,有F(n-2)种情况;另外,即使前面n-2个人不是合法的队列,再加上两个女生也可能是合法队列,且不合法的地方一定是长度为n-2的队列的尾部,即F(n-4) + 1男 + 1女,这样再跟上两个女生才能成为合法队列,这种情况有F(n-4)种。
综上,有递推公式:F(1) = 1, F(2) = 2, F(3) = 4, F(4) = 7; F(n) = F(n-1) + F(n-2) + F(n-4), n>4
7、如果前面n-1个格子已经合法地涂上色,则最后一个格子只有唯一地一种涂法,有F(n-1)种方法;另外一种情况是前n-1个格子不是合法的,那么不合法的地方一定是其尾部,即第n-1个格子与第1个格子同色,那么最后一个格子有两种涂法,因此有2*F(n-2)种方法。
综上,有递推公式:F(1) = 3, F(2) = 6; F(n) = F(n-1) + 2*F(n-2), n>2
8、如果前n-1封信已经全部错装,只需从中任取一封和第n封错装,有(n-1)*F(n-1)种方式;另外如果前n-1封信中有且只有一封信没有装错(注意只能有一封,否则就呵呵了:),有(n-1)*F(n-2)种方式。
综上,有递推公式:F(1) = 0, F(2) = 1; F(n) = (n-1)*[F(n-1) + F(n-2)]。另外,它还有一个帅气的名字叫做错排公式。
PS:斐波那契数列实在太有用了,哪天有空写一下如何用生成函数求解其通项公式。