解题思路:
dp[i]=max(dp[i-1],v[i]+dp[i-2]) # v[i] 表示值&&i-2至少要隔开一个距离
注意事项:
参考代码:
list1=list(input())
temp=list(chr(i) for i in range(96,123))
dict1={}
for i,j in enumerate(temp[1:]):
dict1[j]=i+1
dp=list(0 for i in range(len(list1)))
dp[0]=dict1[list1[0]]
for i in range(1,len(list1)):
# 取和不取
v1=dp[i-1]
v2=dict1[list1[i]]
if i>=2:
v2+=dp[i-2]
mmax=max(v1,v2)
dp[i]=mmax
print(dp[-1])
0.0分
3 人评分
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:1448 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:690 |
C语言训练-排序问题<1> (C语言代码)浏览:600 |
printf基础练习2 (C语言代码)浏览:741 |
蛇行矩阵 (C语言代码)浏览:751 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:694 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:572 |
简单的a+b (C语言代码)浏览:596 |
求圆的面积 (C语言代码)浏览:1669 |
字符逆序 (C语言代码)浏览:614 |