| Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 66355 | 向安琪 | 方阵填数 | Python3 | Wrong Answer | 33 MS | 3888 KB | 1749 | 2024-03-07 10:52:35 |
n = int(input()) matrix = [[0 for _ in range(0)] for _ in range(n)]#初始化N*N方阵为0 if n == 1: print(" "+str(1)) exit(0) #当n为奇数时 elif n % 2 ==1: x,y = 0,n - 1 #起始位置为右上角 matrix[x][y] = 1 #初始值填充1 dx,dy = [1,0,-1,0],[0,-1,0,1]#定义四个方向:上,下,左,右 d = 0#初始方向是向下 #从2开始填充到N*N for i in range(2,n * n + 1): next_x,next_y = x + dx[d],y + dy[d] #计算下一个填充位置 #如果 下一个位置产出方阵范围或者已经被填充,则改变方向 if not (0 <= next_x < n) or not (0 <= next_y < n) or matrix[next_x][next_y] != 0: d = (d+1) % 4 #改变方向 next_x,next_y = x +dx[d],y+dy[d] #重新计算下一个填充位置 x,y = next_x,next_y #更新当前位置 metrix[x][y] = i #填充数字 #当n为偶数时 else: x,y = 0,n-1#起始位置设置在右上角 matrix[x][y] = 1#起始位置填充1 dx,dy = [1,0,-1,0],[0,-1,0,1]#定义四个方向:下,左,上,右 d = 0#初始方向是向下 #从2开始填充N*N for i in range(2,n * n + 1): next_x,next_y = x + dx[d],y + dy[d] #计算下一个填充位置 #如果下一个位置超出方阵范围或已经被填充,则改变方向 if not (0 <= next_x < x) or not (0 <= next_y < n ) or matrix[next_x][next_y] != 0: d = (d+1) %4 #改变方向 next_x,next_y = x +dx[d],y+dy[d] #重新计算下一个填充位置 x,y = next_x,next_y #更新当前位置 matrix[x][y] = i #填充数字 for i in range(n): for j in range(n): print(matrix[i][j],end=" ") print()
------Input------
10
------Answer-----
28 29 30 31 32 33 34 35 36 1 27 58 59 60 61 62 63 64 37 2 26 57 80 81 82 83 84 65 38 3 25 56 79 94 95 96 85 66 39 4 24 55 78 93 100 97 86 67 40 5 23 54 77 92 99 98 87 68 41 6 22 53 76 91 90 89 88 69 42 7 21 52 75 74 73 72 71 70 43 8 20 51 50 49 48 47 46 45 44 9 19 18 17 16 15 14 13 12 11 10
------Your output-----