高级农民
- 积分
- 2600
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2013-3-10
- 最后登录
- 1970-1-1
|
这个其实就是一维的dp数组变成只用三个变量咯,因为你每次更新后面的只需要之前的两个- dp1,dp2 = 1, 1
- #dp = [1] * (len(s) + 1)
- for i in range(1, len(s)):
- new_dp = 1
- if int(s[i]) == 0:
- if int(s[i-1]) > 2 or int(s[i-1]) == 0:
- return 0
- else:
- #dp[i+1] = dp[i-1]
- new_dp = dp1
- else:
- if int(s[i-1]) > 2 or (int(s[i-1]) == 2 and int(s[i]) > 6) or int(s[i-1]) == 0:
- #dp[i+1] = dp[i]
- new_dp = dp2
- else:
- #dp[i+1] = dp[i] + dp[i-1]
- new_dp = dp1 + dp2
- dp1 = dp2
- dp2 = new_dp
复制代码 |
|