华为笔试

第一题 45

第二题 200

第三题 60

话说第一题优化想了好久就是TLE

------第一题单调栈能a

------更新下第二题中庸行者

# If you need to import additional packages or classes, please import here.

def func():
    m, n = map(int, input().split())
    mat = []
    for _ in range(m):
        l = list(map(int, input().split()))
        mat.append(l)
    path = []
    def dfs(i, j, k):
        if not 0 <= i < m or not 0 <= j < n or k == m * n:
            return 0
        if not mat[i][j]: return 0
        if k >= 2:
            if path[:][-1] > mat[i][j] and path[:][-2] > path[:][-1]:
                return 0
            if path[:][-1] < mat[i][j] and path[:][-2] < path[:][-1]:
                return 0
            if path[:][-1] == mat[i][j]:
                return 0
        path.append(mat[i][j])
        tmp = mat[i][j]
        mat[i][j] = ''
        ans = max(dfs(i - 1, j, k + 1), dfs(i + 1, j, k + 1), dfs(i, j - 1, k + 1), dfs(i, j + 1, k + 1)) + 1
        mat[i][j] = tmp
        path.pop()
        return ans 
	  
    res = 0
    for i in range(m):
        for j in range(n):
            ans = dfs(i, j, 0)
            if ans > res:
                res = ans - 1  # 移动次数=path长度-1
    print(res)

	
if __name__ == "__main__":
    func()

#华为求职进展汇总#
全部评论
单调栈就是45,醉了
点赞 回复 分享
发布于 2023-09-06 22:17 陕西
加油加油
点赞 回复 分享
发布于 2023-09-28 00:19 北京

相关推荐

11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
我即大橘:耐泡王
点赞 评论 收藏
分享
2 4 评论
分享
牛客网
牛客企业服务