菜鸡求问拼多多笔试第一题,过了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 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
评论
点赞
2
分享
牛客网
牛客企业服务