给一个字符串列表,然后其中的字符串都是字母组成,且已按照字典序排好。
定义变换1:
如果a字符串删除一个字母、或增加一个字母、或替换一个字母,可以得到b字符串,则说a可以由变换1得到b。
然后求给定列表里的最大满足字典序的子序列,序列中第i个字符串可以由第i-1个字符串经过变换1得到。
兄弟萌我考试的时候超时了!我的方法是建立一个字典,key是字符串,value是以这个字符串为最后一个元素的满足题意的最大子序列长度。
从头开始遍历给定列表,对每个字符串s做变换1结果所有可能情况的遍历,如果在字典里,就把这个字符串的字典值设为对应查找到的结果+1。
最后输出max的value就可以了。剪枝就是对每个字符串变换1所有可能结果遍历的时候,只遍历能让字典序变小的可能。
超时。
兄弟萌有没有好方法。
全部评论
(2) 回帖