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
解题思路:解码有多少种方法。一般求“多少”我们考虑使用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
相关文章推荐
- 2015河南科技学院高校CSDN俱乐部与计算机协会共同举办PPT大赛
- 利用 Parcelable 进行 Activity 之间的复杂数据传递
- 基数、选择性、直方图
- 十一、c语言算术优先级和口诀
- LeetCode Sort List
- 黑马程序员——Java开发工具Eclipse的使用
- 好书推荐--统计陷阱
- OC-053.NSDate类、NSDateFomatter类、NSCalendar类、NSDateComponents类---ios时间类
- 在session过期后如何跳转到登录页面
- 关于原生地图定位的简单操作MapKit的使用
- 聚类算法(一):k-均值 (k-means)算法
- Java的国际化支持(I18N问题)
- Android TextView查看更多
- Java的国际化支持(I18N问题)
- day03 homework
- poj 1141 (区间dp记录路径问题)
- arclist 调用附加字段
- 网页打开qq
- JavaScript- 图表库Highcharts
- Swing 其实比你想象的美