poj 1496&1850

终于做出来了,不禁长舒一口气。

历时+-8小时,倍感压力巨大。

接下来说说我的心得吧:

  • 这题用到的是组合的知识;
  • 处理第一位字母时,需要计算之前的字母排序数,第一位有其特殊之处:如:bcd,处理b位时,前面有 口??,和a??两种情况,我们只要处理2次就可以了;
  • 处理末位时,只要计算(当前位字母-前一位字母)即可;
  • 处理首末之间位置时,就要考虑两种情况:比如bexy,处理e位时,1.口??,这一种对于每一位计算都需要;2. c??、d??,而这一种,就要看前一位和当前位了,之间有几个字母,就有几个排序。
  • 对于排序,这样计算Cmn(该符号为组合数表示),n是 26-当前位字母序数(在字母表中的序数),m是 len-i-1 (len是字符串长度,i是字符串下标(即当前处理位))
posted @ 2010-03-11 19:35  SubmarineX  阅读(170)  评论(0编辑  收藏  举报