poj 1496&1850
终于做出来了,不禁长舒一口气。
历时+-8小时,倍感压力巨大。
接下来说说我的心得吧:
- 这题用到的是组合的知识;
- 处理第一位字母时,需要计算之前的字母排序数,第一位有其特殊之处:如:bcd,处理b位时,前面有 口??,和a??两种情况,我们只要处理2次就可以了;
- 处理末位时,只要计算(当前位字母-前一位字母)即可;
- 处理首末之间位置时,就要考虑两种情况:比如bexy,处理e位时,1.口??,这一种对于每一位计算都需要;2. c??、d??,而这一种,就要看前一位和当前位了,之间有几个字母,就有几个排序。
- 对于排序,这样计算Cmn(该符号为组合数表示),n是 26-当前位字母序数(在字母表中的序数),m是 len-i-1 (len是字符串长度,i是字符串下标(即当前处理位))
/**************************************************************************
                 
原文来自博客园——Submarinex的博客: www.cnblogs.com/submarinex/               
 
*************************************************************************/