标签:自己 line 分类 字符串 等价 语言 mat 去掉 题意
注解:
如果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]种。
注解:
先假设没有非法字符串,那么很明显,总数是3f[n-1];
再去掉a[n-1]和a[n]组成非法串的情况,此时等价于固定a[n-1]与a[n],求前面n-2个的排序,为f[n-2];
综上,一共有3f[n-1]-f[n-2]种。
数学课讲题的话到这里为止吧
这两题看似相似,其题解分别看来也都很有道理,为什么其结果却大相径庭呢?
因为去掉的含非法字符串的情况不是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只能做头,不能做尾。
求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既可以当头又可以当尾,因此它的去除具有“简并性”(逃。
时间关系,懒得举特例来具体对照了,以后补。
另外,以上的比较与分析,只是本蒟蒻因为某些奇奇怪怪的原因(讲数学题去找递推题后,发现的疑惑以及自己的解惑思路。像我这样菜的人对递推还没有更深刻的理解,因此本文中还有很多不恰当的误解和错误,在语言组织与文章结构方面也显得很不成熟,恳请屏幕前的巨佬不吝赐教,一起交流这些奇奇怪怪(毒瘤的想法。
标签:自己 line 分类 字符串 等价 语言 mat 去掉 题意
原文地址:https://www.cnblogs.com/Y15BeTa/p/11013624.html