菜鸡求问拼多多笔试第一题,过了5%

def fenge(i, j):
    if i == j&nbs***bsp;i + j == N-1&nbs***bsp;N % 2 != 0 and int(N/2)== i&nbs***bsp;N % 2 != 0 and int(N/2)== j:
        return True
    return False
N = int(input())
matric = [[0 for col in range(N)] for row in range(N)]
row_start = 0
row_end = N - 1
col_start = 0
col_end = N - 1
index = 1
while row_start <= row_end and col_start <= col_end:
    # 上
    i = row_start
    j = col_end
    while j >= col_start:
        if fenge(i, j) == False:
            matric[i][j] = index
            index += 1
        j -= 1
    # 左
    i = row_start + 1
    j = col_start
    while i < row_end:
        if fenge(i, j) == False:
            matric[i][j] = index
            index += 1
        i += 1
    # 下
    i = row_end
    j = col_start
    while j <= col_end:
        if fenge(i, j) == False:
            matric[i][j] = index
            index += 1
        j += 1
    # 右
    i = row_end - 1
    j = col_end
    while i > row_start:
        if fenge(i, j) == False:
            matric[i][j] = index
            index += 1
        i -= 1
    row_start += 1
    row_end -= 1
    col_start += 1
    col_end -= 1

for row in range(N):
    string = ""
    for col in range(N):
        string += str(matric[row][col]) + " "
    string.strip()
    print(string)


代码如上,本地测试两个样例都对了#笔试题目##拼多多#
全部评论
把坐标系结合进去做的,也不知道有没有更好的方法
点赞 回复 分享
发布于 2020-09-01 21:25
哇哦~这头像和id很眼熟啊🤣
点赞 回复 分享
发布于 2020-09-01 21:33
是不是理解成那种环形报数了…我一开始是这样然后只能过用例…然后改半天发现题目意思理解错…它填的数字只用了1-8…
点赞 回复 分享
发布于 2020-09-01 21:33
我一开始理解成旋转数组了,一直都是10%, 第一题做了1个小时10分钟,才知道。
点赞 回复 分享
发布于 2020-09-01 22:48
其实你想的复杂了…直接按行输出就行了,数字的个数都是和所在行有关系的
点赞 回复 分享
发布于 2020-09-01 23:02

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
点赞
2
分享
牛客网
牛客企业服务