• ternary string一道组合数学题


    题:用0,1,2三个字符组成n长的字符串,连续出现两个0或两个1的字符串有多少种?

    符号说明:f(n)表示符合要求的n长字符串数,f0(n),f1(n),f2(n)分别表示以0,1,2结尾的符合要求的n长字符串数

    用递归,考察n长字符串最后一个元素:

    (1)若为2,则前n-1个元素恰对应一个符合要求(即连续出现两个0或两个1)的字符串,有f(n-1)个

    (2)若为0,则考察倒数第二个元素,(1)若为0,则前n-2个元素任意取,有3n-2个符合要求的字符串;(2)若为1,则前n-1个字符是以1结尾的符合要求的长为n-1的字符串,有f1(n-1)个;(3)若为2,则前n-1个字符是以2结尾的符合要求的长为n-1的字符串,有f2(n-1)个

    (3)若为1,类似(2)的分析

    得到递归式如下

    这个式子貌似不好解,可以考虑问题的反面,即既不出现00又不出现11的n长字符串有多少个?然后用3n减去这个值就得到原问题的解

    用g(n)表示符合要求的n长字符串数,g0(n),g1(n),g2(n)分别表示以0,1,2结尾的既不出现00又不出现11的n长字符串数,称既不出现00又不出现11为“性质G”

    分析是类似的,仍然考虑末尾的取值

    (1)若为2,则前n-1个元素恰对应一个满足性质G的字符串,有g(n-1)个

    (2)若为0,则倒数第二个元素必不为0,(1)若为1,则前n-1个字符是以1结尾的符合性质G的长为n-1的字符串,有g1(n-1)个;(3)若为2,则前n-1个字符是以2结尾的符合性质G的长为n-1的字符串,有g2(n-1)个

    (3)若为1,类似(2)的分析

    得到递归式:

    写成矩阵形式:

    这个是挺好解的,手工用特征值特征向量来求矩阵n-1次幂,也可以用计算机来解,下面是wanbo同学用mathematica解得的结果:

    其中长长的表达式就是g(n),最终结果就是3n-g(n)

  • 相关阅读:
    Spring boot 远程调试
    SpringBoot 日志框架
    樊登读书 你为什么不道歉
    樊登读书 即兴演讲 MD
    樊登读书 爱因斯坦传 MD
    测试页 MD
    樊登读书 你就是孩子最好的玩具 MD
    樊登读书 非暴力沟通 解读 演讲稿 MD
    樊登读书 孔子传 MD
    樊登读书 高效能人士的七个习惯 MD
  • 原文地址:https://www.cnblogs.com/fstang/p/2870621.html
Copyright © 2020-2023  润新知