解题思路:设置了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 人评分
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:667 |
C二级辅导-统计字符 (C语言代码)浏览:533 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:722 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:931 |
2005年春浙江省计算机等级考试二级C 编程题(3) (C语言代码)浏览:389 |
C语言训练-数字母 (C语言代码)浏览:584 |
【出圈】 (C语言代码)浏览:553 |
回文串 (C语言代码)浏览:2855 |
字符串对比 (C语言代码)浏览:1402 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:501 |