您的位置:首页 > 其它

leetcode -- Decode Ways -- dp题目

2015-12-16 20:26 387 查看
https://leetcode.com/problems/decode-ways/

解题思路:解码有多少种方法。一般求“多少”我们考虑使用dp。状态方程如下:

decode s[i], decode (s[i-1], s[i]). 当s[i-1], s[i]这两个字符是10~26但不包括10和20这两个数时,比如21,那么可以有两种编码方式(BA,U),所以dp[i]=dp[i-1]+dp[i-2]. 这里不要以为这里有3中decode方法,因为如果decode 2是一个code,1是一个code,这种2是一个code的方案应该放在dp[n-1]里面去考虑

不能decode s[i]以及(s[i-1], s[i]), 但可以decode s[i-1]。 s[i-1]当s[i-1], s[i]等于10或者20时,由于10和20只有一种编码方式,所以dp[i]=dp[i-2]

只能decode s[i]。当s[i-1], s[i]不在以上两个范围时,如09这种,编码方式为0,没有09对应的编码,只有9对应的编码,所以不能简单的判断第i个数与第i-1个数组成的数是否小于或者等于26来进行编码。而31这种,dp[i]=dp[i-1]。因为对于当前字符s[i]只有本身一种decode的方法,所以dp[i] = dp[i-1] * 1

注意初始化时:dp[0]=1,dp[1]=1

参考/article/4981650.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: