1-2 字典序问题
问题描述
在数据加密和数据压缩中常需要对特殊的字符串进行编码。给定的字母表A由26个小写字母组成。该字母表产生的升序字符串中字母从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1次。例如,a,b,ab,bc,xyz等字符串都是升序字符串。现在对字母表中产生的所有长度不超过6的升序字符串,计算它在字典中的编码。
1 | 2 | … | 26 | 27 | 28 | … |
a | b | … | z | ab | ac | … |
分析1
以第i个字符打头的长度为k的升序字符串个数为 f(i,k) f ( i , k ) ,长度为k的升序字符串总个数为 g(k) g ( k ) ,则 g(k) g ( k ) = ∑26i=1 ∑ i = 1 26 f(i,k) f ( i , k ) 。易知:
f(i,1) f ( i , 1 ) =1
g(1) g ( 1 ) = ∑26i