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)

  • 相关阅读:
    HTTP 与 HTTPS 的区别
    cookie 和session 的区别详解
    IntelliJ远程调试教程
    selenium 自动化测试面试题及答案
    性能测试总结(一)---基础理论篇(转载)
    性能测试总结(二)---测试流程篇(转载)
    性能测试总结(三)--工具选型篇
    eclipse调试的基本意义
    控制反转(IOC)和依赖注入(DI)
    前端框架layui
  • 原文地址:https://www.cnblogs.com/fstang/p/2870621.html
Copyright © 2011-2022 走看看