解题思路:回形打印分解:下->右->上->左,如此循环往复,需要有四种坐标变换的逻辑,
坐标变换->二维数组->找到行列与数组中数的索引的函数
每打印一行或一列,就减少一次行或列的上限或增加一次下限,当下限超过上限时即打印结束
注意事项:
参考代码:
row, column = map(int, input().strip().split()) list1 = [] for i in range(row): list1.extend(list(map(int, input().strip().split()))) r, c = 0, 0 # 标记当前位置 pattern = 0 # 坐标变换模式 r_higher, r_lower, c_higher, c_lower = row - 1, 0, column - 1, 0 while r_higher >= r_lower and c_higher >= c_lower: if pattern == 0:#下 while r 右->上->左 c_lower += 1 # 列下限+1 c += 1 # 列+1 r -= 1 # 行多加了一次,减回去 elif pattern == 1:#右 while c 右->上->左 r_higher -= 1 r -= 1 c -= 1 elif pattern == 2:#上 while r >= r_lower: print(list1[r * column + c], end = " ") r -= 1 pattern = (pattern + 1) % 4 # 四种走向,下->右->上->左 c_higher -= 1 c -= 1 r += 1 elif pattern == 3:#左 while c >= c_lower: print(list1[r * column + c], end = " ") c -= 1 pattern = (pattern + 1) % 4 # 四种走向,下->右->上->左 r_lower += 1 r += 1 c += 1
0.0分
0 人评分
震宇大神的杀毒软件 (C++代码)浏览:1173 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:783 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:573 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:467 |
C语言程序设计教程(第三版)课后习题8.2 (C语言代码)浏览:5275 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:366 |
字符逆序 (C语言代码)浏览:645 |
1011题解浏览:819 |
用筛法求之N内的素数。 (C语言代码)浏览:595 |
一元一次方程 (C语言代码)浏览:4245 |