9.2华为笔试各位牛友帮忙看一下哪里没考虑到(python)

#第二题,常见的DFS
while True:
    try:
        M, N = map(int, input().split(','))
        data = []
        res = 0
        for _ in range(M):
            lst = list(input())
            data.append(lst)
        def backtrack(i, j):
            if i < 0&nbs***bsp;j < 0&nbs***bsp;i > M - 1&nbs***bsp;j > N - 1&nbs***bsp;data[i][j] == "H":
                return
            data[i][j] = 'H'
            backtrack(i + 1, j)
            backtrack(i - 1, j)
            backtrack(i, j + 1)
            backtrack(i, j - 1)
            return


        for i in range(M):
            for j in range(N):
                if data[i][j] == "S":
                    backtrack(i, j)
                    res += 1
        print(res)
    except:
        break

#81.82%,第三题,很常见的0-1背包问题
while True:
    try:
        K = int(input())
        N = int(input())
        w = list(map(int, input().split()))
        v = list(map(int, input().split()))
        dp = [0] * (K + 1)
        for i in range(1, N + 1):
            for j in range(K, 0, - 1):
                if j >= w[i - 1]:
                    dp[j] = max(dp[j], dp[j - w[i - 1]] + v[i - 1])
        print(dp[-1])
    except:
        break
第三题还要满足最大体积,没有思路,各位指点一下🤣#笔试题目##华为#
全部评论
我第二题写的跟力扣上一模一样,但死活就是只有80
点赞 回复 分享
发布于 2020-09-02 21:44
第二题我用bfs能ac,dfs只能过70,第三题我也只有80,看其他人反馈,是看错题目要求了,要求是要满足最大体积的前提😂
点赞 回复 分享
发布于 2020-09-02 22:05
楼主第三题的思路是什么呢,能讲一下吗
点赞 回复 分享
发布于 2020-09-02 22:35
我第一道题写的太复杂了,有无大佬有比较灵活一点的思路,求一个java版的代码😂
点赞 回复 分享
发布于 2020-09-03 01:17
第三题有个前提是空间占用最大, 但是我考虑了这个条件还是没过,我觉得是答案错了🤣
点赞 回复 分享
发布于 2020-09-03 02:04

相关推荐

牛客339922477号:都不用reverse,直接-1。一行。啥送分题
点赞 评论 收藏
分享
斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
点赞 5 评论
分享
牛客网
牛客企业服务