dotcpp0744061


私信TA

用户名:dotcpp0744061

访问量:183

签 名:

等  级
排  名 45687
经  验 283
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:设置了h_u, h_d, v_l, v_r 四个参数,分别代表水平上边,水平下边,垂直左边,垂直右边

当遍历垂直左边的时候,起始位置为h_u,结束位置为n - h_d

当遍历水平下边的时候,起始位置为v_l,结束位置为m - v_r

当遍历垂直右边的时候,起始位置为h_d,结束位置为n - h_u

当遍历水平上边的时候,起始位置为v_r,结束位置为m - v_l

依次遍历即可输出全部

【详情请看下代码】
注意事项:代码很简陋,没考虑到的地方很多,请见谅,代码能力目前很差

参考代码:

n, m = map(int, input().split())
M = []
for _ in range(n):
    a = list(map(int, input().split()))
    M.append(a)
total = n * m
cnt = 0
flag = 0
h_u, h_d, v_l, v_r = 0, 0, 0, 0
while cnt != total:
    if flag % 4 == 0:
        for i in range(h_u, n - h_d):  # 遍历不同行的同一列
            print(M[i][v_l], end=' ')
            cnt += 1
        v_l += 1
        flag += 1
    elif flag % 4 == 1:
        for j in range(v_l, m - v_r):
            print(M[n - h_d - 1][j], end=' ')
            cnt += 1
        h_d += 1
        flag += 1
    elif flag % 4 == 2:
        for k in range(h_d, n - h_u):
            print(M[n - k - 1][m - v_r - 1], end=' ')
            cnt += 1
        v_r += 1
        flag += 1
    elif flag % 4 == 3:
        for l in range(v_r, m - v_l):
            print(M[h_u][m - l - 1], end=' ')
            cnt += 1
        h_u += 1
        flag += 1


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区