0821滴滴笔试

数据岗

1. 旋转斐波那契数列放进数组中。

2. 输入字符矩阵,判断“CHINA”个数

第一题:

def addValue(matrix, fibList, tr, tc, dr, dc):
    if tr == dr:
        for i in range(tc, dc + 1):
            matrix[tc][i] = fibList.pop()
    elif tc == dc:
        for i in range(tr, dr + 1):
            matrix[i][tc] = fibList.pop()
    else:
        curC = tc
        curR = tr
        while curC != dc:
            matrix[tc][curC] = fibList.pop()
            curC += 1
        while curR != dr:
            matrix[curR][dc] = fibList.pop()
            curR += 1
        while curC != tc:
            matrix[dr][curC] = fibList.pop()
            curC -= 1
        while curR != tr:
            matrix[curR][tc] = fibList.pop()
            curR -= 1


def test01(n):
    if n < 2:
        print(n)
        return
    item1, item2 = 0, 1
    fibonacciList = [1]
    for _ in range(2, n * n + 1):
        ans = item1 + item2
        item1, item2 = item2, ans
        fibonacciList.append(ans)
    res = [[0] * n for _ in range(n)]
    tr, tc = 0, 0
    dr, dc = n - 1, n - 1
    while tr <= dr and tc <= dc:
        addValue(res, fibonacciList, tr, tc, dr, dc)
        tr += 1
        tc += 1
        dr -= 1
        dc -= 1
    for i in range(n):
        for j in range(n):
            print(res[i][j], end=" ")
        print()


if __name__ == '__main__':
    n = int(input())
    test01(n)

第二题

def test02(matrix, china, rows, cols):
    tmp = [True] * rows * cols
    count = 0
    for i in range(rows):
        for j in range(cols):
            res = find(matrix, tmp, rows, cols, i, j, china)
            count += res
    print(count // 4)


def find(matrix, tmp, rows, cols, i, j, path):
    count = 0
    if not path:
        return 1
    index = i * cols + j
    if i < 0 or i >= rows or j < 0 or j >= cols \
            or matrix[index] != path[0] or not tmp[index]:
        return 0
    tmp[index] = False
    # if find(matrix, tmp, rows, cols, i - 1, j, path[1:]) \
    #         or find(matrix, tmp, rows, cols, i + 1, j, path[1:]) \
    #         or find(matrix, tmp, rows, cols, i, j - 1, path[1:]) \
    #         or find(matrix, tmp, rows, cols, i, j + 1, path[1:]):
    #     return True
    count = find(matrix, tmp, rows, cols, i - 1, j, path[1:]) + \
            find(matrix, tmp, rows, cols, i + 1, j, path[1:]) + \
            find(matrix, tmp, rows, cols, i, j - 1, path[1:]) + \
            find(matrix, tmp, rows, cols, i, j + 1, path[1:])
    # if find(matrix, tmp, rows, cols, i - 1, j, path[1:]):
    #     count += 1
    # if find(matrix, tmp, rows, cols, i + 1, j, path[1:]):
    #     count += 1
    # if find(matrix, tmp, rows, cols, i, j - 1, path[1:]):
    #     count += 1
    # if find(matrix, tmp, rows, cols, i, j + 1, path[1:]):
    #     count += 1
    # return True
    tmp[index] = True
    return count


if __name__ == '__main__':
    n = int(input().strip())
    matrix = []
    for i in range(n):
        matrix.extend(input().strip())
    # matrix = list(matrix)
    test02(matrix, "CHINA", n, n)
#滴滴##笔试题目#
全部评论
大佬  为啥count//4呢?
点赞 回复 分享
发布于 2020-08-22 18:57
大佬能说说第二题的思路嘛
点赞 回复 分享
发布于 2020-08-21 23:51

相关推荐

KKorz:是这样的,还会定期默写抽查
点赞 评论 收藏
分享
评论
1
8
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4237次浏览 75人参与
# AI面会问哪些问题? #
27346次浏览 548人参与
# 厦门银行科技岗值不值得投 #
7886次浏览 188人参与
# 你的实习产出是真实的还是包装的? #
19973次浏览 342人参与
# 找AI工作可以去哪些公司? #
8806次浏览 228人参与
# 春招至今,你的战绩如何? #
64123次浏览 575人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
14979次浏览 220人参与
# 从事AI岗需要掌握哪些技术栈? #
8694次浏览 296人参与
# 你做过最难的笔试是哪家公司 #
32770次浏览 226人参与
# 中国电信笔试 #
31627次浏览 285人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
340658次浏览 2173人参与
# 阿里笔试 #
178225次浏览 1311人参与
# 第一份工作一定要去大厂吗 #
14318次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22006次浏览 280人参与
# 沪漂/北漂你觉得哪个更苦? #
9702次浏览 193人参与
# HR最不可信的一句话是__ #
6124次浏览 113人参与
# 应届生第一份工资要多少合适 #
20660次浏览 86人参与
# AI时代,哪个岗位还有“活路” #
11369次浏览 339人参与
# 春招你拿到offer了吗 #
830972次浏览 9986人参与
# 长得好看会提高面试通过率吗? #
22430次浏览 254人参与
# 聊聊你的职场新体验 #
336397次浏览 1894人参与
# 学历对求职的影响 #
665009次浏览 4249人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务