zoukankan      html  css  js  c++  java
  • 递推趣题

    在网上看到一个关于递推求解的课件,感觉里面的问题很经典有趣,层层递进,因此在这里记录一下。

    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:斐波那契数列实在太有用了,哪天有空写一下如何用生成函数求解其通项公式。

  • 相关阅读:
    Java中ArrayList和LinkedList区别
    poi操作excel之: 将NUMERIC转换成TEXT
    Spring事务异常回滚,捕获异常不抛出就不会回滚
    CollectionUtils.select用法
    名词解释
    jenkins
    代码测试文章推荐
    redis 参考文章
    zookeeper,dubbo,dubbo admin
    Navicat For Mysql快捷键
  • 原文地址:https://www.cnblogs.com/xpjiang/p/4388540.html
Copyright © 2011-2022 走看看