白羽啊


私信TA

用户名:723822380

访问量:3188

签 名:

等  级
排  名 4468
经  验 1691
参赛次数 0
文章发表 22
年  龄 0
在职情况 学生
学  校 泉师
专  业

  自我简介:

解题思路:回形打印分解:下->右->上->左,如此循环往复,需要有四种坐标变换的逻辑,

              坐标变换->二维数组->找到行列与数组中数的索引的函数

              每打印一行或一列,就减少一次行或列的上限或增加一次下限,当下限超过上限时即打印结束
    
注意事项:

参考代码:

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 人评分

  评论区

  • «
  • »