百度清一色的数学方法, 惟一的动态规划还是有问题的
数学方法无法参悟,于是参考了动态规划方法的建表,自己又写了一遍
首先是建表,表格大小7*27,其中第一行为了方便是闲置的
行代表字符串长度,列代表字符串起始字母;
第一行(i=1)第一列(j=0)代表以a开头长度为1的字符串个数,显然是1;
第一行均为长度为1的字符串,个数均为1;
第一行最后一列记录这一行的总数,这里是26;
第二行第一列代表以a开头长度为2的字符串个数,显然是a[1][26]-a[1][0],以b开头长度为2的字符串个数是a[1][26]-a[1][0]-a[1][1],以此类推;
第二行开始需要注意以z开头没有长度超过1的字符串,y开头没有长度超过2的字符串...等等;
同样的,最后一列记录这一行总的个数;
以此类推,直到最后一行,建表完成。
接下来是计算部分,首先定义了一些变量:
ans:编码值-1;
pos:纵向移动,最多移动5次;
siz:字符串长度;
mov:横向移动,最多移动25次;
cnt:记录横向断点;
再来看一下具体如何计算:
首先计算当前行前一行到第一行的最后一列值之和(第一行例外,为0ÿ