华为330笔试 前两题Python版

据说只要100分就过笔试啦
A了两题直接溜了,第三题等大佬们的题解啦。
抛砖引玉的前两题Python解法
#芯片
def func():
    M = int(input())
    N = int(input())
    alist = list(map(str, input().split()))
    rest = [0] * M
    j = 0
    mark = 0
    for i in range(len(alist) - 1):
        if alist[i] == 'B':
            while j < M and rest[j] != 0:
                j += 1
            if j < M:
                rest[j] += 4
            else:
                break
        else:
            while mark < M and rest[mark] == 4:
                mark += 1
            if mark < M:
                rest[mark] += 1
            else:
                break

    if alist[-1] == 'A':
        while mark < M and rest[mark] == 4:
            mark += 1
        if mark < M:
            rest[mark] += 1
            print(mark + 1)
            print(rest[mark])
        else:
            print(0)
            print(0)
    else:
        while j < M and rest[j] != 0:
            j += 1
        if j < M:
            rest[j] += 4
            print(j + 1)
            print(1)
        else:
            print(0)
            print(0)

#找路
def func():
    tmp = list(map(int, input().split()))
    m = tmp[0]          #行
    n = tmp[1]          #列
    start = list(map(int, input().split())) #开始
    end = list(map(int, input().split()))   #结束
    count = int(input())
    stop = []
    res = []
    path = []
    for i in range(count):
        tmp = list(map(int, input().split()))   #挡道
        stop.append(tmp[:])

    mark = [[0] * n for i in range(m)]
    for alist in stop:
        i, j = alist[0], alist[1]
        mark[i][j] = 1

    def dfs(i, j, path):
        if i >= m&nbs***bsp;j >= n&nbs***bsp;i < 0&nbs***bsp;j < 0: return
        if i == end[0] and j == end[1]:
            if not res:
                res.append(path[:])
                return
            else:
                if len(path) == len(res[0]):
                    res.append(path[:])
                    return
                elif len(path) < len(res[0]):
                    while res:
                        res.pop()
                    res.append(path[:])
                    return

        if 0 <= i < m and 0 <= j < n and mark[i][j] == 0:
            path.append((i, j))
            mark[i][j] = 1
            dfs(i - 1, j, path)
            dfs(i, j - 1, path)
            dfs(i + 1, j, path)
            dfs(i, j + 1, path)
            path.pop()
            mark[i][j] = 0

    dfs(start[0], start[1], path)
    print(str(len(res)) + ' ' + str(len(res[0])))


#华为笔试#
全部评论
题目都没有发出来有啥用呢
1 回复 分享
发布于 2022-04-19 16:05
问一下楼主投的什么岗
点赞 回复 分享
发布于 2022-03-30 22:43
为什么我还没收到笔试通知😓
点赞 回复 分享
发布于 2022-04-04 23:44
楼主有java版吗?
点赞 回复 分享
发布于 2022-04-09 13:03
总分多少
点赞 回复 分享
发布于 2022-04-12 00:48
楼主 我也准备考python,python需要啥程度才能过呢?
点赞 回复 分享
发布于 2022-05-11 14:57

相关推荐

漂亮的海豚在炒股:把西电加粗
点赞 评论 收藏
分享
Elastic90:公司不要求加班,但 又不允许你准点下班,经典又当又立
点赞 评论 收藏
分享
评论
6
40
分享

创作者周榜

更多
牛客网
牛客企业服务