zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    Linux Core Dump
    ODP.NET Managed正式推出
    获取EditText的光标位置
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1028 数的计算
  • 原文地址:https://www.cnblogs.com/fstang/p/2870621.html
Copyright © 2011-2022 走看看