菜鸡求问拼多多笔试第一题,过了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 23:02
我一开始理解成旋转数组了,一直都是10%, 第一题做了1个小时10分钟,才知道。
点赞 回复 分享
发布于 2020-09-01 22:48
是不是理解成那种环形报数了…我一开始是这样然后只能过用例…然后改半天发现题目意思理解错…它填的数字只用了1-8…
点赞 回复 分享
发布于 2020-09-01 21:33
哇哦~这头像和id很眼熟啊🤣
点赞 回复 分享
发布于 2020-09-01 21:33
把坐标系结合进去做的,也不知道有没有更好的方法
点赞 回复 分享
发布于 2020-09-01 21:25

相关推荐

06-26 18:30
门头沟学院 Java
据说名字越长别人越关...:你问问这里面有多少是正经候选人,而不是乱打招呼的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-04 15:20
牛客61197583...:看到室友一个个没怎么学通过关系直接入职或者接到面试,真的很难受。八股不知道背了多少遍,hot100也刷了1.5遍了,但就是没有面试的机会,唉
点赞 评论 收藏
分享
想按时下班的我在等o...:我投测试也是这个情况,不知道咋办了
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务