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 广东

相关推荐

沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 6 评论
分享
牛客网
牛客企业服务