首页 > 华为 9.9笔试
头像
芒果爱泡泡
编辑于 2020-09-09 21:42
+ 关注

华为 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_)
第三题:二叉树最大异或路径和(类似)
递归写的,不知哪里出错了,全局变量处理错了,不会。




全部评论

(13) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐