Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
79380 胡海峰老师 方阵填数 Python3 Accepted 41 MS 3808 KB 1335 2024-07-04 18:12:15

Tests(3/3):


Code:

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)))