暴力枚举。
时间复杂度
动态规划。
TT,TF,FT,FF有i1,i2,i3,i4个,最后一位是 T
(记为 1) 或 F
(记为 0)的方案数。
以最后一位是 F
为例: 。
初始值:。
时间/空间复杂度 。
考虑最终的字符串一定能划分成形如 TT...T
(大于等于 1 个连续的 T
)和FF...F
(大于等于 1 个连续的 F
)拼凑而成的形式。
TF
只会出现在 TT...T
和 FF...F
的交界处,FT
只会出现在 FF...F
和 TT...T
的交界处,而 TT
和 FF
只会分别出现在 TT...T
和 FF...F
的内部。
最终的字符串只会有以下四种可能:
FF...FTT...T......FF...FTT...T
TT...TFF...F......TT...TFF...F
TT...TFF...F......FF...FTT...T
FF...FTT...T......TT...TFF...F
因为 TT...T
和 FF...F
的数量最多相差 ,所以 TF
和 FT
的数量最多相差 ,否则必然无解。
当 TT...T
和 FF...F
的数量相差 时,对应 1 或 2 两种情况。
以情况 1 为例,此时 TT...T
的数量等同于 TF
的数量加上 ,FF...F
的数量等同于 FT
的数量。
TT
的数量代表了在所有 TT...T
中还要放进多少个 T
。举例说明:
T
中有 个 TT
,TT
中有 个 TT
,TTT
中有 个 TT
……
如果只考虑 T
,那么就是将 个 T
分成 段,相当于将 个放成一排的球分成 段,要求每段至少有一个球的方案数。
这相当于在 个空隙放入 个隔板,方案数为 (这是组合数的一种表示)。
类似地,对于 F
,方案数为 。(因为此时有 个 F
)
由于 T
如何放入对于 F
是没有影响的,并且可以保证产生不同的方案,所以总方案数为 。
当 TT...T
和 FF...F
的数量相等时,对应 3 和 4 两种情况。
这时,第一段可能是 TT...T
(此时 个 TT...T
, 个 FF...F
),也可能是 FF...F
(此时 个 TT...T
, 个 FF...F
)。计算方法与上文类似。
时间复杂度 或 。