华为 9.9笔试



第一题:完美序列 90%
n=int(input())
nums1=list(map(int,input().split()))
nums2=list(map(int,input().split()))
m=int(input())
nums3=list(map(int,input().split()))
nums4=list(map(int,input().split()))
if (nums1[0] not in nums3) and (nums2[0] not in nums4):
    print(0)
else:
    for i in range(m):
        if i>m-n:
            print(0)
            break
        else:  
            if nums3[i]==nums1[0]:
                cur=0
                Flag=True
                for j in range(i,i+n):
                    
                    if nums3[j]==nums1[cur] and nums4[j]==nums2[cur]:
                        cur+=1
                    else:
                        Flag=False
                        break
                if Flag==True:
                    print(i+1)
                    break
第二题:最长递减子序列,一开始用dp,发现不对,还可以向上走,改用dfs。
n,m=map(int,input().split())
path,res=[],[]
for _ in range(n):
    path=list(map(int,input().split()))
    res.append(path)
direct=[(0,1),(0,-1),(-1,0),(1,0)]
dp=[[0]*m for _ in range(n)]
def dfs(i,j):
    if  dp[i][j]!=0:
        return dp[i][j]
    dp[i][j]=1
    for dx,dy in direct:
        x,y=i+dx,j+dy
        if 0<=x<n and 0<=y<m and  res[x][y]<res[i][j]:
            dp[i][j]=max(dp[i][j],1+dfs(x,y))
    return dp[i][j]
max_=0
for i in range(n):
    for j in range(m):
        max_=max(max_,dfs(i,j))
print (max_)
第三题:二叉树最大异或路径和(类似)
递归写的,不知哪里出错了,全局变量处理错了,不会。




#笔试题目##华为#
全部评论
应该把1.9这个选项单独列出来
2 回复 分享
发布于 2020-09-09 21:18
第二第三题总共写了20分钟AC,第一题为了解决超时调试了一个小时2333
2 回复 分享
发布于 2020-09-09 21:11
第一题只能90%……
1 回复 分享
发布于 2020-09-09 21:09
什么时候有测评通知啊
点赞 回复 分享
发布于 2020-09-10 12:55
坑爹啊,最后一题输入顺序是不是乱的,查了好久都查不出错,测试能过,以提交就是0
点赞 回复 分享
发布于 2020-09-09 21:39
楼楼你第一题代码是不是错的啊。
点赞 回复 分享
发布于 2020-09-09 21:27
没人第三道求成了异或吗?
点赞 回复 分享
发布于 2020-09-09 21:24
有人知道多少分算过吗
点赞 回复 分享
发布于 2020-09-09 21:19
第一题思路是啥啊?我暴力查找只能过60%,KMP算法又记不住了
点赞 回复 分享
发布于 2020-09-09 21:17
题解题解:https://blog.csdn.net/qq_38649940/article/details/108501724
点赞 回复 分享
发布于 2020-09-09 21:14
def dfs(matrix,path,i,j,cache):     if(cache[i][j] != 0):         return cache[i][j]     for k in range(len(path)):         x,y = i+path[k][0],j+path[k][1]         if(x >= 0 and x < len(matrix) and y >= 0 and y < len(matrix[0]) and matrix[i][j] > matrix[x][y]):             cache[i][j] = max(cache[i][j],dfs(matrix,path,x,y,cache))     cache[i][j] = cache[i][j] + 1     return cache[i][j] line = input().split() m = int(line[0]) n = int(line[1]) matrix = list() cache = list() for i in range(m):     line = input().split()     matrix.append(list())     cache.append(list())     for j in range(n):         matrix[i].append(line[j])         cache[i].append(0) if(m == 0):     print(0) else:     path = [[-1,0],[0,-1],[1,0],[0,1]]     mmax = 0     for i in range(m):         for j in range(n):             mmax = max(mmax,dfs(matrix,path,i,j,cache))     print(mmax)
点赞 回复 分享
发布于 2020-09-09 21:10
第一题只有30%,后面两题ac了😂
点赞 回复 分享
发布于 2020-09-09 21:10
第二题dfs+记忆化一样思路,代码也基本一样,为甚么我只过了25
点赞 回复 分享
发布于 2020-09-09 21:10

相关推荐

首先讲三个故事,关于牛客的事件一:2024年,牛客上有一对高学历情侣,求职方向与我当时一致,都是嵌入式方向。他们恰好是我的朋友,专业能力和学历背景都很扎实,也因此拿到了不少优质offer。和很多求职者一样,他们把offer情况整理后发在平台上,本意是记录与交流,但很快引发了争议。有声音指责他们“集邮”“不释放名额”,认为这种展示本身就是一种炫耀。最终讨论失控,当事人删除内容,事件也很快被遗忘。事件二:小红书评论区,一条评价获得了不少共鸣:“感觉牛客就是当年那群做题区毕业了开始找工作还收不住那股味,颇有一种从年级第一掉到年纪第二后抱怨考不上大学的味道”,这条评论被水印里这个同学转发到牛客后,评论...
小型域名服务器:当看到别人比自己强的时候,即便这是对方应得的,很多人会也下意识的歪曲解构对方的意图,来消解自己在这本就不存在的比较中输掉的自信,从而平白制造出很多无谓的争论。比如你会在空余时间来写优质好文,而我回家只会暗区突围,那么我就可以作为键盘侠在这里评论你是不是XXXXXXXX。即便我自己都知道这是假的,但只要这没那么容易证伪,那么当你开始回应的时候,脏水就已经泼出去了,后面可能会有更多的人带着情绪来给我点赞,而毫不关注你写的文章内容本身是啥了。
SAGIMA牛马咖啡
点赞 评论 收藏
分享
Lorn的意义:我的前辈都劝我年后再投,说那时候会好一点
点赞 评论 收藏
分享
评论
3
16
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务