博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两道递推公式题的解题报告
阅读量:4936 次
发布时间:2019-06-11

本文共 1254 字,大约阅读时间需要 4 分钟。

T1(阿牛的EOF牛肉串)

  • 题意:一串由EOF三个字母组成的长度为\(n\)的字母串,不能出现连续的OO,求字符串种类数\(f[n]\)
  • 答案:\(f[n]=2f[n-1]+2f[n-2]\) ——①
  • 注解:

    如果a[n]取E,该情况下种类为f[n-1];      如果a[n]取F,该情况下种类为f[n-1];      如果a[n]取O,则只能取a[n-1]为E或F,分别有f[n-2]种。      综上,一共有f[n-1]+f[n-1]+f[n-2]+f[n-2]种。

T2 (原题找不到了,恳请见过的巨佬提供线索)

  • 题意:一串由WAC三个字母组成的长度为\(n\)的字母串,不能出现连续的WA,求字符串种类数\(f[n]\)
  • 答案:\(f[n]=3f[n-1]-f[n-2]\) ——②
  • 注解:

    先假设没有非法字符串,那么很明显,总数是3f[n-1];      再去掉a[n-1]和a[n]组成非法串的情况,此时等价于固定a[n-1]与a[n],求前面n-2个的排序,为f[n-2];      综上,一共有3f[n-1]-f[n-2]种。

数学课讲题的话到这里为止吧

比较

这两题看似相似,其题解分别看来也都很有道理,为什么其结果却大相径庭呢?

为什么T1不适合用②式:

因为去掉的含非法字符串的情况不是f[n-2]。

因为在求f[n]时我们已经事先使前n-1项合法,所以在f[n-1](我们用来乘以三作为总数的)中a[n-1]为O的可能性比T2中a[n-1]为W的可能性小。

这是因为,a[n-1]中的O可以作为非法串的尾,与a[n-2]组成OO。因此,在求f[n-1]时已经有一部分a[n-1] 为O的情况被筛掉了。

但对于T2,在求f[n-1]时不可能把a[n-1]为W的情况筛掉,因为W只能做头,不能做尾。

为什么T2不适合用①式:

我的理解当中比较重要的点

  • 求f[n]时对a[n]的假设是在保证a[1]~a[n-1]合法的基础上的,并在此基础上对a[n-1]进行分类讨论。在求f[n]时实际上是对a[n]的放置,我们要避免的是a[n-1]与a[n]形成非法字符串。

  • T1中的O既可以当非法子串的头,也可以当尾,这应该是这两种情况不同的根本原因。

  • 由上述分析可见n>=3时T1的f[n]总比T2大,因为我们先假设没有非法串求其总数,之后要去掉含有非法串的情况,对于T1来说同一个O既可以当头又可以当尾,因此它的去除具有“简并性”(逃。

  • 时间关系,懒得举特例来具体对照了,以后补。

  • 另外,以上的比较与分析,只是本蒟蒻因为某些奇奇怪怪的原因(讲数学题去找递推题后,发现的疑惑以及自己的解惑思路。像我这样菜的人对递推还没有更深刻的理解,因此本文中还有很多不恰当的误解和错误,在语言组织与文章结构方面也显得很不成熟,恳请屏幕前的巨佬不吝赐教,一起交流这些奇奇怪怪(毒瘤的想法。

转载于:https://www.cnblogs.com/Y15BeTa/p/11013624.html

你可能感兴趣的文章
【智能家居篇】wifi网络接入原理(上)——扫描Scanning
查看>>
操作引入xml文件的书包(定位到指定节点)
查看>>
操作系统学习笔记系列(一)- 导论
查看>>
已计划将多个默认网关用于提供单一网络
查看>>
CSS实例:图片导航块
查看>>
python进阶七_文件操作(三)
查看>>
window的对象有哪些(笔记)
查看>>
成绩查询方法指引Pmp
查看>>
Boolean Expressions
查看>>
They Are Everywhere
查看>>
数据结构--汉诺塔递归Java实现
查看>>
day14 多态与抽象
查看>>
Eclipse CDT 出现 launch failed Binary not found
查看>>
apache jmeter
查看>>
Linux 基本命令
查看>>
RedHat7.0 网络源的配置
查看>>
(Mark)JS中关于闭包
查看>>
流程结构图
查看>>
ios端web app在键盘升起后缩小view防止界面仍可上下滑动
查看>>
从service弹出系统级自定义提示框,可在任意页面弹出
查看>>