滴滴笔试第二题
有佬AC吗,我为啥dp就9%,调了一小时思路感觉没问题![](https://uploadfiles.nowcoder.com/images/20220815/318889480_1660553763673/6409638369766F7FC4FBE09BD8BF58AB)
思路大概是分奇偶位,然后分别判断#滴滴#
def main():
n, k = map(int, input().split())
cost = [0] * k
st = 'abcdefghijklmnopqrstuvwxyz'
for i in range(k):
cost[i] = list(map(int, input().split()))
s = input()
dp = [0] * (n + 1)
dp[2] = cost[st.index(s[0])][st.index(s[1])]
for i in range(3, n + 1):
if i & 1 == 1:
dp[i] = max(dp[i - 1], dp[i - 2] + cost[st.index(s[i - 2])][st.index(s[i - 1])])
else:
dp[i] = max(dp[i - 2] + cost[st.index(s[i - 2])][st.index(s[i - 1])], dp[i - 1] + cost[st.index(s[0])][st.index(s[i - 1])])
print(dp[-1])
if __name__ == "__main__":
main()
思路大概是分奇偶位,然后分别判断#滴滴#
def main():
n, k = map(int, input().split())
cost = [0] * k
st = 'abcdefghijklmnopqrstuvwxyz'
for i in range(k):
cost[i] = list(map(int, input().split()))
s = input()
dp = [0] * (n + 1)
dp[2] = cost[st.index(s[0])][st.index(s[1])]
for i in range(3, n + 1):
if i & 1 == 1:
dp[i] = max(dp[i - 1], dp[i - 2] + cost[st.index(s[i - 2])][st.index(s[i - 1])])
else:
dp[i] = max(dp[i - 2] + cost[st.index(s[i - 2])][st.index(s[i - 1])], dp[i - 1] + cost[st.index(s[0])][st.index(s[i - 1])])
print(dp[-1])
if __name__ == "__main__":
main()
全部评论
我也是这个,应该就过了测试样例
我也是9%,这个应该也是取通过最多的一次自动保存吧,后面我cout了一堆用来调试的。
可以学学区间dp😂
不用分奇偶,奇数是删不完的只用考虑偶数
相关推荐
01-15 17:34
保定学院 Java 点赞 评论 收藏
分享