Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
79380 | 胡海峰老师 | 方阵填数 | Python3 | Accepted | 41 MS | 3808 KB | 1335 | 2024-07-04 18:12:15 |
def spiral_fill(n): # 创建一个 n x n 的矩阵,初始值都设为 0 matrix = [[0] * n for _ in range(n)] # 定义螺旋填充的四个方向:向右、向上、向左、向下 directions = [(1, 0), (0, -1), (-1, 0), (0, 1)] # 当前方向索引 direction_index = 0 # 当前位置 x, y = 0, n-1 # 步长 dx, dy = directions[direction_index] # 填充数字 for i in range(1, n ** 2 + 1): # 到达新一行或列的开头时,转向 # if (x == n - 1 or y == n - 1 or matrix[x][y + 1] != 0) : # direction_index += 1 # direction_index = direction_index%4 # dx, dy = directions[direction_index] if x ==n or y ==n or matrix[x][y]!=0 : x -= dx y -= dy direction_index += 1 direction_index = direction_index % 4 dx, dy = directions[direction_index] x += dx y += dy # 填充当前位置的数字 matrix[x][y] = i # 移动到下一个位置 x += dx y += dy return matrix # 读取用户输入的 n 值 n = int(input()) # 获取螺旋填充的矩阵 matrix = spiral_fill(n) # 打印矩阵 for row in matrix: print(" ".join(map(str, row)))