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)

  • 相关阅读:
    PAT 1007 Maximum Subsequence Sum 最大连续子序列和
    数据库系统原理课程设计——图书借阅管理系统
    计算机组成原理——数据的表示与运用
    win7系统下安装Ubuntu18.04组成双系统
    C++中set用法详解
    C++ getline函数用法详解
    数据库——关系演算
    计算机组成原理——计算机系统概述考研题
    PAT 1002 A+B for Polynomials(map模拟)
    PAT 1001 A+B Format
  • 原文地址:https://www.cnblogs.com/fstang/p/2870621.html
Copyright © 2011-2022 走看看