20220820美团笔试问题

第四题变化版的编辑距离,明明很简单,自己试了几个用例也是对的。但是我代码一直ac不了,大佬们帮我看看哪里有问题
n,m = list(map(int, input().split(' ')))
A = list(map(int, input().split(' ')))
B = list(map(int, input().split(' ')))

dp = [[0]*(m+1) for _ in range(n+1)]
# dp[i][j]表示A[i-1],B[j-1]的修改距离

# 初始化
for i in range(1,n+1):
    dp[i][0] = dp[i-1][0]+abs(A[i-1])
for j in range(1,m+1):
    dp[0][j] = dp[0][j-1]+abs(B[j-1])

# 状态转移
for i in range(1,n+1):
    for j in range(1,m+1):
        if A[i-1]==B[j-1]:
            dp[i][j]=dp[i-1][j-1]
        else:
            dp[i][j] = min(dp[i][j-1]+abs(B[j-1]), dp[i-1][j]+abs(A[i-1]),dp[i-1][j-1]+abs(A[i-1]-B[j-1]))
print(dp[-1][-1])


#美团笔试##做完美团2023秋招笔试,你还好吗#
全部评论
可以用滚动数组把空间复杂度降到O(m),但我也是81
点赞 回复 分享
发布于 2022-08-20 12:21 北京
其实不需要判断A[i-1]==B[j-1]  但是我用dp超时😭
点赞 回复 分享
发布于 2022-08-20 12:26 北京
我c++和你思路一样,ac了
点赞 回复 分享
发布于 2022-08-20 12:28 四川
少考虑一种情况,就是两个字符一起删
点赞 回复 分享
发布于 2022-08-20 12:32 广东
看着和我写的差不多。但是我过了82。😂
点赞 回复 分享
发布于 2022-08-20 12:33 江苏
dp = [[0]*(m+1) for _ in range(n+1)] 这个初始化叭,最开始应该要是 INT_MAX 叭?
点赞 回复 分享
发布于 2022-08-20 12:39 广东
java通过18%,有没有大佬跟我一样
点赞 回复 分享
发布于 2022-08-20 13:26 四川
你要把其他的dp数组中的值初始化成正无穷, 不然你取min的时候不是一直都是0嘛?
点赞 回复 分享
发布于 2022-08-20 14:08 浙江
兄弟 我也是python,这道题跟你做的一模一样,只过了45,就没想明白哪有问题
点赞 回复 分享
发布于 2022-08-20 14:32 上海
曼哈顿距离能贴个代码吗
点赞 回复 分享
发布于 2022-08-20 14:38 江苏
可以给个c++的AC吗
点赞 回复 分享
发布于 2022-08-20 14:47 山东
佳都科技集团2023届秋季校招欢迎投递 战略级人才项目‼全面系统培养体系‼ 内推码:NTANQ1z,码到成功https://mp.weixin.qq.com/s/qJzgEGbsUHdwg2oE6aDKbQ
点赞 回复 分享
发布于 2022-08-20 15:34 广东

相关推荐

找不到工作死了算了:没事的,雨英,hr肯主动告知结果已经超越大部分hr了
点赞 评论 收藏
分享
09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
点赞 6 评论
分享
牛客网
牛客企业服务